本文介紹Linux pgrep命令的基礎(chǔ)知識。pgrep是一個命令行實用程序,可讓您根據(jù)給定的條件查找正在運行的程序的進程ID。 它可以是完整或部分的進程名稱,運行該進程的用戶或其他屬性。
pgrep命令是procps(或procps-ng)軟件包的一部分,該軟件包已預(yù)裝在幾乎所有Linux發(fā)行版中。
如何使用pgrep命令
pgrep命令的語法如下:
pgrep [選項] <模式>
使用擴展的正則表達(dá)式指定匹配的<模式>。
當(dāng)不帶任何選項調(diào)用時,pgrep將顯示與給定名稱匹配的所有正在運行程序的PID。 例如,要查找SSH服務(wù)器的PID,應(yīng)運行:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep ssh
如果存在名稱與“ssh”匹配的正在運行的進程,則其PID將顯示在屏幕上。 如果未找到匹配項,則輸出為空。
輸出
668
1555
當(dāng)至少一個正在運行的進程與請求的名稱匹配時,該命令返回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使用正則表達(dá)式執(zhí)行搜索操作,并將列出名稱中包含“ ssh”的所有進程:
輸出
668 sshd
1555 ssh-agent
如果只想匹配名稱與搜索模式完全相同的進程,則可以使用:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep ‘^sshd$’ -l
668 sshd
尖號(^)字符在字符串的開頭匹配,而美元$在結(jié)尾。
默認(rèn)情況下,pgrep只匹配進程名稱。 使用-f選項時,該命令將與完整的參數(shù)列表匹配。
[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
從上面的示例中可以看到,您還可以組合選項,而選項之間不能有空格,并且可以用一個短劃線隔開。
要反轉(zhuǎn)匹配,即僅顯示不符合給定條件的進程,請使用-v選項。以下命令將打印用戶“linuxmi”也未運行的所有進程:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep -v -u linuxmi
-c選項告訴pgrep只打印匹配進程的計數(shù)。例如,要查找以“linuxmi”用戶身份運行的進程,請輸入:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep -c -u linuxmi
78
總結(jié)
pgrep命令用于根據(jù)不同的標(biāo)準(zhǔn)找出正在運行的程序的PID。
有關(guān)pgrep命令的更多信息,請訪問pgrep手冊頁或在終端中輸入man pgrep。
如果您有任何疑問或反饋,請隨時發(fā)表留言告訴我們。
更多Linux命令相關(guān)信息見Linux命令大全 專題頁面 http://www.sfodin.cn/topicnews.aspx?tid=16