Linux的pkill和pgrep命令詳解 名稱pgrep, pkill – 尋找或者發訊號給進程通過名稱和其它屬性。 文法 pgrep [-flvx] [-n | -o] [-d delim] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern] pkill [-signal] [-fvx] [-n | -o] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern] 說明pgrep程式檢查在系統的中活動進程,報告進程屬性匹配命令列上指定條件的進程的ID。每一個進程ID以一個十進位數表示,通過一個分割字串和下一個ID分開,預設的分割字串是一個新行。對於每個屬性選項,使用者可以在命令列上指定一個以逗號分割的可能值的集合。例如,pgrep -G other,daemon匹配真實組ID是other或者是daemon的進程。如果多個條件被指派,這些匹配條件按邏輯與”AND”規則運算。例如,pgrep -G other,daemon -U root,daemon匹配進程它的屬性是:(真實的組ID是other或者是daemon) 與 (真實的使用者ID是root或者是daemon)pkill函數和pgrep相同,除了匹配的進程被訊號通知就像用kill(1)替代了pgrep的進程ID的輸出。一個訊號名稱或者數字可以作為pkill的第一個命令列選項。 選項支援下面的選項:The following options are supported:-c ctidlist 僅匹配列表中列出的ID的進程。-d delim 指定每一個匹配的進程ID之間分割字串。如果沒有 -d 選項指定,預設的是新行字元。-d 選項僅在pgrep命令中有效。-fRegex模式將執行與完全進程參數字串 (從/proc/nnnnn/psinfo檔案的pr_psargs欄位獲得)匹配。如果沒有 -f 選項,運算式僅對執行檔案名稱(從/proc/nnnnn/psinfo檔案pr_fname欄位獲得)匹配。-g pgrplist僅匹配進程組ID在給定列表中的進程。如果組0包括在列表中,這個被解釋為pgrep或者pkill進程的組ID。-G gidlist僅匹配真實組ID在給定列表中的進程。每一個組ID可以使用組名稱或者數位組ID指定。-J projidlist匹配項目ID在給定列表中的進程。每一個項目ID可以使用項目的名稱或者數字項目ID來指定。-l長格式輸出。輸出每一個匹配進程的名稱連同進程ID。進程名稱從pr_psargs 或者 pr_fname欄位獲得,依賴於-f選項是否指定。-l選項僅在pgrep命令中有效。-n匹配最新(最近產生的)符合所有其它匹配條件的進程。不能和-o選項一起使用。-o匹配最舊(最早產生的)符合所有其它匹配條件的進程。不能和-n選項一起使用。-P ppidlist 僅匹配給定列表中父進程ID的進程。-s sidlist 僅匹配進程會話ID在給定列表中的進程。如果ID 0在列表中,這個解釋為pgrep或者pikill進程的會話ID。-t termlist 僅匹配與給定列表中終端關聯的進程。每一個終端指定為在/dev中終端裝置路徑名稱的尾碼。例如term/a 或者 pts/0。-T taskidlist 僅匹配在給定列表中任務ID的進程。如果ID 0包括在列表中,這個解釋為pgrep或者pikill進程的會話ID。-u euidlist 僅匹配有效使用者ID在給定列表中的進程。每個使用者ID可以通過一個登入名稱稱或者數位使用者ID指定。-U uidlist 僅匹配真實的使用者ID在給定列表中的進程。每個使用者ID可以通過一個登入名稱稱或者數位使用者ID指定。-v 反向匹配。匹配所有的進程除了符合匹配條件的。-x 僅認為進程其參數字串或者執行檔案名稱正確匹配規定模式是匹配的進程。模式被認為是準確的當所有在進程參數字串或者可執行檔名稱的字元匹配模式。-z zoneidlist 僅匹配地區ID在給定列表中的進程。每一個地區ID可以使用一個地區名稱或者一個數位地區ID指定。這個選項僅在全域地區中執行有效。如果pkill程式用來往其它地區的進程發訊號,進城必須宣稱{PRIV_PROC_ZONE}特權。-signal 指定發往每一個匹配進程的訊號。如果沒有指定,SIGTERM 是預設的訊號。-signal僅在pkill命令中作為第一個選項有效。訊號可以是在signal.h中定義的沒有SIG首碼的一個符號名字,也可是一個相應的訊號數值。 操作 支援如下操作:pattern指定一個擴充Regex(Extended Regular Expression (ERE))模式來匹配可執行檔名稱或者完整的進程參數字串。ERE文法的完整描述參看regex(5)。 例子 例子1 獲得一個進程ID 獲得sendmail的進程ID: example% pgrep -x -u root sendmail283 例子2 終止一個進程 終止最近產生的xterm: example% pkill -n xterm Exit Status 如下退出值被返回: 0 一個或者多個進程被匹配。1 沒有進程被匹配。2 指定了無效的命令列參數。3 出現一個致命的錯誤。