首頁 > 軟體

理解Linux中的pgrep命令

2020-06-16 16:25:59

本文介紹Linux pgrep命令的基礎知識。pgrep是一個命令列實用程式,可讓您根據給定的條件查詢正在執行的程式的進程ID。 它可以是完整或部分的進程名稱,執行該進程的使用者或其他屬性。

pgrep命令是procps(或procps-ng)軟體包的一部分,該軟體包已預裝在幾乎所有Linux發行版中。

如何使用pgrep命令

pgrep命令的語法如下:

pgrep [選項] <模式>

使用擴充套件的正規表示式指定匹配的<模式>。

當不帶任何選項呼叫時,pgrep將顯示與給定名稱匹配的所有正在執行程式的PID。 例如,要查詢SSH伺服器的PID,應執行:

[linuxmi@linux:~/www.linuxmi.com]$ pgrep ssh

如果存在名稱與“ssh”匹配的正在執行的進程,則其PID將顯示在螢幕上。 如果未找到匹配項,則輸出為空。

輸出

668
1555

當至少一個正在執行的進程與請求的名稱匹配時,該命令返回0。 否則,退出程式碼為1。在shell指令碼中使用時,這很有用。

pgrep在換行符上列印每個匹配的進程ID。 -d選項允許您指定其他定界符。 例如,如果要使用空格作為定界符,請輸入:

[linuxmi@linux:~/www.linuxmi.com]$ pgrep ssh -d' '

輸出

668 1555

-l選項告訴pgrep顯示進程名稱及其ID:

[linuxmi@linux:~/www.linuxmi.com]$ pgrep sshd -l

pgrep使用正規表示式執行搜尋操作,並將列出名稱中包含“ ssh”的所有進程:

輸出

668 sshd
1555 ssh-agent

如果只想匹配名稱與搜尋模式完全相同的進程,則可以使用:

[linuxmi@linux:~/www.linuxmi.com]$ pgrep '^sshd$' -l
668 sshd

尖號(^)字元在字串的開頭匹配,而美元$在結尾。

預設情況下,pgrep只匹配進程名稱。 使用-f選項時,該命令將與完整的參數列匹配。

[linuxmi@linux:~/www.linuxmi.com]$ pgrep -f ssh
668
1555

使用-u選項告訴pgrep顯示給定使用者正在執行的進程:

[linuxmi@linux:~/www.linuxmi.com]$ pgrep -u root

要指定多個使用者,請用逗號分隔其名稱:

[linuxmi@linux:~/www.linuxmi.com]$ pgrep -u root,linuxmi

您還可以組合選項和搜尋模式。例如,要列印所有在使用者“linuxmi”下執行並且名稱中包含“ gnome”的進程及其名稱,您可以輸入:

[linuxmi@linux:~/www.linuxmi.com]$ pgrep -l -u linuxmi gnome
1402 gnome-keyring-d
1417 gnome-session-b
1583 gnome-shell
1638 gnome-shell-cal
1986 gnome-software
8392 gnome-terminal-

要僅顯示最近(最舊)或最近(最新)啟動的進程,請使用-n(代表最新)或-o(代表最舊)選項。

例如,要查詢由使用者“linuxmi”啟動的最新過程,請輸入:

[linuxmi@linux:~/www.linuxmi.com]$ pgrep -lnu linuxmi
8793 bash

從上面的範例中可以看到,您還可以組合選項,而選項之間不能有空格,並且可以用一個短劃線隔開。

要反轉匹配,即僅顯示不符合給定條件的進程,請使用-v選項。以下命令將列印使用者“linuxmi”也未執行的所有進程:

[linuxmi@linux:~/www.linuxmi.com]$ pgrep -v -u linuxmi

-c選項告訴pgrep只列印匹配進程的計數。例如,要查詢以“linuxmi”使用者身份執行的進程,請輸入:

[linuxmi@linux:~/www.linuxmi.com]$ pgrep -c -u linuxmi
78

總結

pgrep命令用於根據不同的標準找出正在執行的程式的PID。

有關pgrep命令的更多資訊,請存取pgrep手冊頁或在終端中輸入man pgrep。

如果您有任何疑問或反饋,請隨時發表留言告訴我們。


IT145.com E-mail:sddin#qq.com