Linux 系統(tǒng)提供了各種系統(tǒng)服務(wù)(如 syslog、cron 等)和網(wǎng)絡(luò)服務(wù)(如 DNS、SSH 等)。
從技術(shù)上講,服務(wù)是一個(gè)或一組在后臺(tái)持續(xù)運(yùn)行的進(jìn)程(通常稱為守護(hù)進(jìn)程),等待接收請(qǐng)求(尤其是來(lái)自客戶端的請(qǐng)求)。
Linux 支持不同的服務(wù)管理方式(啟動(dòng)、停止、重啟、設(shè)置開機(jī)啟動(dòng)等),通常是通過(guò)進(jìn)程或服務(wù)管理器。大多數(shù) Linux 發(fā)行版使用 systemd 進(jìn)程管理器。
什么是 systemd
Systemd 是 Linux 的系統(tǒng)和服務(wù)管理器,init 進(jìn)程的直接替代品,它與 SysV 和 LSB init 腳本兼容,systemctl 命令是管理 systemd 的主要工具。
Systemd 的更多信息,可以查看Rocky Linux Systemd 介紹一文。
為什么要查看 Linux 中正在運(yùn)行的服務(wù)
出于多種原因,了解 Linux 系統(tǒng)上運(yùn)行的服務(wù)至關(guān)重要。它使你能夠監(jiān)控資源利用率、解決問題并有效地管理系統(tǒng)性能。Systemd 通過(guò)提供強(qiáng)大的命令來(lái)收集有關(guān) active services 的信息,從而簡(jiǎn)化了這項(xiàng)任務(wù)。
在本指南中,我將演示在 Linux 系統(tǒng)中列出 Systemd 下所有正在運(yùn)行的服務(wù)的進(jìn)程,為不同經(jīng)驗(yàn)水平的讀者提供全面的指導(dǎo)。
列出 systemd 下正在運(yùn)行的服務(wù)
執(zhí)行不帶任何參數(shù)的 systemctl 命令,將顯示所有已加載的 systemd 單元列表,包括 services,并顯示它們的狀態(tài)(無(wú)論是否處于 active 狀態(tài))。
systemctl
列出所有已加載的 systemd unit list
列出 systemctl 中的所有 Units
要列出系統(tǒng)中所有加載的 services(無(wú)論是 active、running、exited 還是 failed),請(qǐng)使用 list-units 子命令和 --type 選項(xiàng),其值為 service。
systemctl list-units --type=service
# OR
systemctl --type=service
查看 systemctl 中的所有服務(wù)
要列出所有已加載且處于 active 狀態(tài)的 services,可以添加 --state 選項(xiàng),其值為 active,如下所示。
systemctl list-units --type=service --state=active
# OR
systemctl --type=service --state=active
查看狀態(tài)為 active 的 services
列出 systemctl 中正在運(yùn)行的服務(wù)
但要快速查看所有正在運(yùn)行的服務(wù)(即所有已加載且主動(dòng)運(yùn)行的服務(wù)),請(qǐng)運(yùn)行以下命令。
systemctl list-units --type=service --state=running
# OR
systemctl --type=service --state=running
查看 Running 狀態(tài)的 Services
以下是與 Systemd 單元及其狀態(tài)相關(guān)的主要術(shù)語(yǔ):
- Unit:?jiǎn)卧梢允?service、socket、device 或各種其他實(shí)體。
- Load:表示單元是否已加載。一個(gè)單元可以被加載,但狀態(tài)不一定是 active 的。
- Active:顯示單元是否正在主動(dòng)運(yùn)行,或者它是否遇到問題,處于失敗或不活動(dòng)狀態(tài)。
- SUB:提供了關(guān)于單元的特定狀態(tài)的附加細(xì)節(jié)。對(duì)于 service,它可能指示服務(wù)是否正在運(yùn)行(running)、已停止(exited)或遇到問題(failed)。
- Description:描述文檔,幫助用戶識(shí)別和理解單元的用途,而無(wú)需深入研究詳細(xì)的配置文件。
為 systemctl 命令創(chuàng)建別名
如果經(jīng)常使用前面的命令,可以在 ~/.bashrc 文件中創(chuàng)建一個(gè)別名命令,如下所示,以便輕松調(diào)用它。
# vim ~/.bashrc
然后在別名列表下添加以下行:
alias running_services='systemctl list-units --type=service --state=running'
保存并關(guān)閉文件,執(zhí)行 source 命令,加載該命令:
# source ~/.bashrc
接下來(lái)就可以使用 running_services 命令查看服務(wù)器上所有已加載的、正在運(yùn)行的服務(wù)的列表。
使用別名查看服務(wù)列表
查找進(jìn)程監(jiān)聽的端口
此外,查看服務(wù)的端口也很重要。要確定守護(hù)進(jìn)程正在監(jiān)聽的端口,可以使用 netstat 或 ss 命令,如下所示。
netstat -ltunp
# OR
ss -ltunp
其中,-l 表示打印所有監(jiān)聽套接字,-t 表示顯示所有 TCP 連接,-u 表示顯示所有 UDP 連接,-n 表示打印數(shù)字端口號(hào)(而不是應(yīng)用程序名稱),-p 表示顯示應(yīng)用程序名稱。
例如查看 ssh 進(jìn)程的端口號(hào)信息:
# ss -ltunp | grep ssh
查看 ssh 服務(wù)端口號(hào)
第五列顯示套接字:local_address:port。在這種情況下,ssh 進(jìn)程正在偵聽 TCP 22 端口。
總結(jié)
在本指南中,我演示了如何在 Linux 中查看 systemd 下正在運(yùn)行的服務(wù)。還介紹了如何查看服務(wù)正在監(jiān)聽的端口。這些都是運(yùn)維工作中的常見操作。
-
Linux
+關(guān)注
關(guān)注
87文章
11304瀏覽量
209519 -
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
593瀏覽量
27397 -
進(jìn)程
+關(guān)注
關(guān)注
0文章
203瀏覽量
13961 -
服務(wù)管理器
+關(guān)注
關(guān)注
0文章
2瀏覽量
462
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論