pgrep — 依名稱或屬性搜尋程序並顯示 PID

依名稱搜尋程序並輸出 PID,比 ps | grep 更乾淨準確。

語法

pgrep [選項] 樣式

常用選項

選項 說明 範例
-l, --list-name 同時顯示程序名稱 pgrep -l nginx
-a, --list-full 顯示完整的指令列(含參數) pgrep -a python
-u 使用者 只搜尋指定使用者的程序 pgrep -u www-data
-x 完整名稱匹配(不是子字串匹配) pgrep -x bash
-c, --count 只顯示符合條件的程序數量 pgrep -c nginx
-f, --full 對完整指令列(含參數)進行匹配 pgrep -f "python server.py"
-n, --newest 只顯示最新啟動的符合程序 pgrep -n nginx
-o, --oldest 只顯示最早啟動的符合程序 pgrep -o nginx

使用範例

範例 1:查詢 nginx 的 PID

快速取得所有 nginx 程序的 PID(包含 master 和 worker)。

$ pgrep nginx
1234
1235
範例 2:顯示 PID 和程序名稱

加上 -l 同時顯示名稱,方便確認對應到哪個程序。

$ pgrep -l python
1234 python3
5678 python3
範例 3:判斷程序是否在執行(腳本用)

在腳本中用 pgrep 的回傳碼(0=找到,1=找不到)判斷程序狀態。

$ if pgrep -x nginx > /dev/null; then
  echo 'nginx 正在執行'
else
  echo 'nginx 未執行'
fi
nginx 正在執行
範例 4:搜尋完整指令列

使用 -f 對完整指令(含啟動參數)進行匹配,精確找到特定的程序實例。

$ pgrep -f "gunicorn myapp:app"
3456

延伸閱讀