>
目錄
- 在 Linux 中列出 SystemD 下正在運行的服務
Linux系統提供多種系統服務(如進程管理、登錄、syslog、cron等)和網絡服務(如遠程登錄、電子郵件、打印機、虛擬主機、數據存儲、文件傳輸、域名解析等) (使用 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 開關。
# systemctl list-units --type=service OR # systemctl --type=service
要列出所有已加載但處于活動狀態的服務,包括正在運行的和已退出的服務,您可以添加值為 active 的 –state 選項,如下所示。
# systemctl list-units --type=service --state=active OR # systemctl --type=service --state=active
但要快速瀏覽所有正在運行的服務(即所有已加載和正在運行的服務),請運行以下命令。
# systemctl list-units --type=service --state=running OR # systemctl --type=service --state=running
如果您經常使用前面的命令,您可以如圖所示在 ~/.bashrc 文件中創建一個別名命令,以便輕松調用它。
vim ~/.bashrc
然后在別名列表下添加以下行,如屏幕截圖所示。
alias running_services='systemctl list-units --type=service --state=running'
保存文件中的更改并關閉它。從現在開始,使用“running_services”命令查看服務器上所有已加載、正在運行的服務的列表。
# running_services #use the Tab completion
此外,服務的一個重要方面是它們使用的端口。要確定守護進程正在偵聽的端口,您可以使用 netstat 或 ss 命令,如圖所示。
其中標志 -l 表示打印所有偵聽套接字,-t 顯示所有 TCP 連接,-u 顯示所有 UDP 連接,-n 表示打印數字端口號(而不是應用程序名稱),-p 表示顯示應用程序名稱。
# netstat -ltup | grep zabbix_agentd OR # ss -ltup | grep zabbix_agentd
第五列顯示套接字:Local Address:Port。在這種情況下,進程 zabbix_agentd 正在偵聽端口 10050。
此外,如果您的服務器正在運行防火墻服務,該服務控制如何阻止或允許進出所選服務或端口的流量,您可以使用 firewall-cmd 或 ufw 命令列出已在防火墻中打開的服務或端口(取決于您使用的 Linux 發行版),如圖所示。
# firewall-cmd --list-services [FirewallD] # firewall-cmd --list-ports $ sudo ufw status [UFW Firewall]
目前為止就這樣了!在本指南中,我們演示了如何在 Linux 中查看 systemd 下正在運行的服務。我們還介紹了如何檢查正在偵聽的端口服務以及如何查看在系統防火墻中打開的服務或端口。
>