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