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