天天看點

如何在 Linux 中列出 Systemd 下所有正在運作的服務

作者:冷凍工廠

動動發财的小手,點個贊吧!

Linux系統提供多種系統服務(如程序管理、登入、syslog、cron等)和網絡服務(如遠端登入、電子郵件、列印機、虛拟主機、資料存儲、檔案傳輸、域名解析等) (使用 DNS)、動态 IP 位址配置設定(使用 DHCP)等等)。

從技術上講,服務是一個程序或一組程序(通常稱為守護程序)在背景持續運作,等待請求進入(尤其是來自用戶端的請求)。

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

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

在本指南[1]中,我們将示範如何在 Linux 中列出 systemd 下所有正在運作的服務。

在 Linux 中列出 SystemD 下正在運作的服務

當您運作不帶任何參數的 systemctl 指令時,它将顯示所有加載的 systemd 單元的清單(閱讀 systemd 文檔以擷取有關 systemd 單元的更多資訊),包括服務,顯示它們的狀态(無論是否處于活動狀态)。

systemctl 
           
如何在 Linux 中列出 Systemd 下所有正在運作的服務

要列出系統上所有已加載的服務(無論是活動的、正在運作的、退出的還是失敗的,請使用 list-units 子指令和帶有服務值的 --type 開關。

# systemctl list-units --type=service
OR
# systemctl --type=service
           
如何在 Linux 中列出 Systemd 下所有正在運作的服務

要列出所有已加載但處于活動狀态的服務,包括正在運作的和已退出的服務,您可以添加值為 active 的 --state 選項,如下所示。

# systemctl list-units --type=service --state=active
OR
# systemctl --type=service --state=active
           
如何在 Linux 中列出 Systemd 下所有正在運作的服務

但要快速浏覽所有正在運作的服務(即所有已加載和正在運作的服務),請運作以下指令。

# systemctl list-units --type=service --state=running 
OR
# systemctl --type=service --state=running
           
如何在 Linux 中列出 Systemd 下所有正在運作的服務

如果您經常使用前面的指令,您可以如圖所示在 ~/.bashrc 檔案中建立一個别名指令,以便輕松調用它。

vim ~/.bashrc
           

然後在别名清單下添加以下行,如螢幕截圖所示。

alias running_services='systemctl list-units  --type=service  --state=running'
           
如何在 Linux 中列出 Systemd 下所有正在運作的服務

儲存檔案中的更改并關閉它。從現在開始,使用“running_services”指令檢視伺服器上所有已加載、正在運作的服務的清單。

# running_services #use the Tab completion 
           
如何在 Linux 中列出 Systemd 下所有正在運作的服務

此外,服務的一個重要方面是它們使用的端口。要确定守護程序正在偵聽的端口,您可以使用 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。

如何在 Linux 中列出 Systemd 下所有正在運作的服務

此外,如果您的伺服器正在運作防火牆服務,該服務控制如何阻止或允許進出所選服務或端口的流量,您可以使用 firewall-cmd 或 ufw 指令列出已在防火牆中打開的服務或端口(取決于您使用的 Linux 發行版),如圖所示。

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

$ sudo ufw status     [UFW Firewall]
           
如何在 Linux 中列出 Systemd 下所有正在運作的服務

目前為止就這樣了!在本指南中,我們示範了如何在 Linux 中檢視 systemd 下正在運作的服務。我們還介紹了如何檢查正在偵聽的端口服務以及如何檢視在系統防火牆中打開的服務或端口。

Reference

[1]Source: https://www.tecmint.com/list-all-running-services-under-systemd-in-linux/