首頁 > 軟體

如何在Linux系統列出systemd下所有正在執行的服務

2020-06-16 16:31:33

Linux系統提供各種系統服務(如進程管理、登入、syslog、cron等)和網路服務(如遠端登入、電子郵件、印表機、Web主機、資料儲存、檔案傳輸、域名解析(使用DNS)、動態IP地址分配(使用DHCP)等等)。

從技術上講,服務是一個或一組進程(通常稱為守護行程)在後台連續執行,等待請求(特別是來自客戶機的請求)。

Linux支援不同的方法來管理服務(啟動、停止、重新啟動、在系統啟動時的自動啟動等),通常通過流程或服務管理器。 大多數現代Linux發行版現在使用相同的進程管理器:systemd。

Systemd是Linux的系統和服務管理器; init進程的替代品,與SysV和LSB init指令碼相容,systemctl命令是管理systemd的主要工具。

在本指南中,我們將演示如何在Linux下列出systemd下所有正在執行的服務。

在Linux SystemD下列出正在執行的服務

當您執行沒有任何引數的systemctl命令時,它將顯示所有已載入的systemd單元(有關systemd單元的更多資訊,請閱讀systemd文件)的列表,包括服務,並顯示它們的狀態(是否處於活動狀態)。

# systemctl

要列出系統上所有已載入的服務(無論是活動的,執行的,退出的還是失敗的,請使用 list-units子命令和--type開關,其值為service。

# systemctl list-units --type=service

或者

# systemctl --type=service

要列出所有已載入但處於活動狀態的服務,包括正在執行的服務和已退出的服務,可以新增--state選項,其值為active,如下所示。

# systemctl list-units --type=service --state=active

或者

# systemctl --type=service --state=active

如果要快速瀏覽所有正在執行的服務(即所有已載入和正在執行的服務),請執行以下命令。

# systemctl list-units --type=service --state=running

或者

# systemctl --type=service --state=running

如果經常使用上一個命令,可以在~/.bashrc檔案中建立一個別名命令,如圖所示,以便輕鬆呼叫它。

# vim ~/.bashrc

然後在別名列表下新增以下行,如螢幕截圖所示。

alias running_services='systemctl list-units  --type=service  --state=running'

將更改儲存在檔案中並關閉它。 從現在開始,使用“running_services”命令檢視伺服器上所有已載入,正在執行的服務的列表。

# running_services #使用Tab完成

此外,服務的一個重要方面是他們使用的埠。 要確定守護程式進程正在偵聽的埠,可以使用netstat或ss工具,如圖所示。

其中標誌-l表示列印所有偵聽通訊端,-t顯示所有TCP連線,-u表示所有UDP連線,-n表示列印數位埠號(而不是應用程式名稱),-p表示顯示應用程式名稱。

# netstat -ltup | grep MySQLd.service

或者

# ss -ltup | grep zabbix_agentd

第五列顯示通訊端:本地地址:埠。 在這種情況下,進程zabbix_agentd正在偵聽埠10050。

此外,如果您的伺服器執行防火牆服務,該服務控制如何阻止或允許來自或來自所選服務或埠的流量,您可以使用firewall-cmd或ufw命令列出已在防火牆中開啟的服務或埠( 取決於您正在使用的Linux發行版),如下所示。

# firewall-cmd --list-services  [FirewallD]
# firewall-cmd --list-ports

$ sudo ufw status    [UFW Firewall]

總結

目前為止就這樣了! 在本指南中,我們演示了如何在Linux下檢視systemd下的執行服務。 我們還介紹了如何檢查服務正在偵聽的埠以及如何檢視在系統防火牆中開啟的服務或埠。 你有任何補充或提問嗎? 如果有,請使用下面的評論表聯絡我們。


IT145.com E-mail:sddin#qq.com