如何使用命令行列出Linux中所有正在運行的服務

與所有其他操作系統一樣,基於Linux的操作系統具有在計算機運行時運行的進程和服務。 它們的範圍從各種操作系統服務到命令行,再到各種旨在保持系統平穩運行的服務/守護程序。 從支持服務到旨在處理輸入,提高性能,卸載資源等的特殊服務,大多數服務對於流程的正常運行都是至關重要的。流程也是計算機基本功能的骨幹,因此為每個人擁有資源很重要。

但是,如果不考慮安全措施,服務可能會在您不知情的情況下運行,耗盡系統資源,甚至使您的系統易受攻擊。 由於存在這些可能的情況,因此最好知道如何檢查和處理此類情況,並且能夠隨時跟蹤計算機上正在運行的進程和服務。

在本文中,我們將介紹幾種列出/顯示Linux服務器或計算機上所有正在運行的服務和進程的方法,並介紹一些有用的命令來幫助您查找和管理這些進程和服務。

“服務”命令行工具

幾乎每個Linux發行版都預安裝了service命令。 儘管主要目的是啟動和停止腳本以及創建進程,但是“服務”也可以用於隨時查看正在運行或停止的服務。 使用一個簡單的命令,我們將獲得完整的服務列表:

service --status-all

運行此命令時,將顯示相同的輸出:

[ + ] apache-htcacheclean
[ + ] apache2
[ + ] apparmor
[ + ] bind9
[ - ] bluetooth
[ - ] bootmisc.sh
[ - ] cgmanager
[ - ] cgproxy
[ - ] checkfs.sh
[ - ] checkroot-bootclean.sh
[ - ] checkroot.sh
(continued)

如何從命令行列出Linux中所有正在運行的服務

如您所見,服務列表作為輸出提供,在服務名稱的左側帶有一個字符。 “ +”表示服務正在運行,“-”表示服務已停止,“?” 表示狀態目前未知。 與搜索工具(例如“ grep”)結合使用時,很容易找到正在運行的特定服務。 然後,您可以通過輸入特定過程的狀態命令來基於該過程檢查狀態:

service <service name> status

然後,它將輸出與該特定服務相關的一堆信息,包括進程的位置,服務是否正在運行,甚至是服務中日誌文件的最後幾行。

聚苯乙烯

PS是一個預安裝的實用程序,用於顯示信息和有關進程的信息。 這是一個簡單,快速的工具,旨在快速獲得結果而無需大驚小怪。 使用一個簡單的命令,我們可以列出當前正在運行的進程的詳細列表:

ps-輔助

您可以將其與less命令結合使用,以進一步提高可讀性。 在執行此命令時,我們將獲得有關每個正在運行的進程的詳細信息。 您還可以使用grep命令將結果縮小到特定的進程名稱,進程ID等。

命令行工具“頂部”

“頂部”是一個內置工具,旨在提供您計算機上當前正在運行的所有進程和服務的概述。 它包含在基於Debian和RedHat的發行版中,並提供了許多功能來幫助您了解服務器上正在發生的事情。 您可以從頂部開始,只需在命令行上繪製頂部即可。 它應該是這樣的:

top - 03:29:24 up 53 min, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 58 total, 1 running, 57 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2097152 total, 1025376 free, 504424 used, 567352 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1485816 avail Mem
PID  USER PR NI VIRT   RES  SHR S %CPU %MEM TIME+  COMMAND
1073 root 20 0  128404 1672  888 S 0.3 0.1 0:00.45 screen
3160 root 20 0  157900 2156 1516 R 0.3 0.1 0:00.06 top
   1 root 20 0  129484 3716 2412 S 0.0 0.2 0:03.03 systemd
   2 root 20 0       0    0    0 S 0.0 0.0 0:00.00 kthreadd/2306
   3 root 20 0       0    0    0 S 0.0 0.0 0:00.00 khelper/2306
  57 root 20 0   39176 2816 2492 S 0.0 0.1 0:00.53 systemd-journal
  63 root 20 0   42624 1740 1292 S 0.0 0.1 0:00.01 systemd-udevd
(continued)

如何從命令行列出Linux中所有正在運行的服務看起來可能有些混亂,但是大多數此類信息都非常有幫助。 例如,我們可以看到系統已經運行了多長時間,平均負載,有多少用戶登錄,有多少個進程(任務)正在運行,正在休眠等,以及有關我們擁有的內存量和在服務器上可用。 頂部進一步詳細介紹了特定於流程的級別。 每列顯示一個特定值,該值與正在運行的進程相關。 我們可以看到誰擁有一個進程,正在使用多少內存,使用了多少處理器,該進程唯一的命令名稱和進程ID,並且如果同一進程中有多個進程,則可以幫助我們識別該進程。 使用所有這些信息,我們可以確切地看到每個進程正在做什麼以及每個進程正在使用多少資源。

HTOP

就其核心特性和功能而言,Htop與“ top”非常相似。 它通常不包括在默認的操作系統安裝中,但是對於大多數(如果不是全部)Linux發行版,可以通過其預安裝的軟件存儲庫使用它。 像top一樣,htop允許用戶查看有關每個進程的詳細信息以及關注系統本身。 但是,htop允許對顯示的信息進行更精確的控制,並且還提供了一組可應用於流程的實用程序。

例如,通過htop,您可以調整流程的細微程度(優先級),使用不同的強度級別將其殺死,等等。還有一種分類功能,可以使您僅查看對您重要的信息變得更加容易。 可以在一個空格中選擇過程,從而更容易跟蹤和跟蹤特定過程(或多個過程,因為您一次可以選擇多個)。 藉助搜索功能,您甚至可以更輕鬆地檢查和關注特定過程。 Htop甚至具有一個表示各種系統資源的條形圖,使您可以輕鬆查看分配了多少CPU或RAM。

以下是htop的示例:

1  [                                                                0.0%] Tasks: 35, 113 thr; 1 running
2  [||                                                              1.3%] Load average: 0.01 0.05 0.01
Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 799M/2.00G] Uptime: 4 days, 22:53:28
Swp[                                                               0K/0K]

  PID   USER  PRI NI   VIRT  RES  SHR S CPU%  MEM%   TIME+  Command
 9357  mysql   20  0  1625M 196M 1944 S 0.7    9.6  4:54.66 /usr/sbin/mysqld
26708   root   20  0  26520 4092 1464 R 0.7    0.2  0:00.66 htop
    1   root   20  0 129484 3716 2412 S 0.0    0.2  0:03.03 systemd
(continued)

藉助頂部的條形圖,您可以一目了然地查看系統的工作方式,以及位於其下方的可自定義的詳細信息。

如何從命令行列出Linux中所有正在運行的服務使用這些工具中的任何一個,您都可以輕鬆找到有關您的服務和流程的準確信息。

Sidebar