pidof — 依程式名稱取得 PID

依程式名稱查詢 PID,輸出格式簡潔適合腳本使用。

語法

pidof [選項] 程式名稱...

常用選項

選項 說明 範例
-s 只顯示第一個找到的 PID(single) pidof -s nginx
-x 同時搜尋正在執行的 Shell 腳本 pidof -x my-script.sh
-o PID 排除指定的 PID pidof -o $$ bash
-t 每行輸出一個 PID pidof -t nginx

使用範例

範例 1:取得 nginx 的 PID

輸出所有 nginx 程序的 PID(master 和 worker)。

$ pidof nginx
1234 1235
範例 2:在腳本中讀取 PID 並傳送訊號

取得 daemon 的 PID 後傳送 SIGHUP 讓它重新讀取設定。

$ PID=$(pidof -s nginx)
if [ -n "" ]; then
  kill -HUP ""
fi
範例 3:替代讀取 PID 檔案的方式

比讀取 /var/run/nginx.pid 更通用,不依賴 PID 檔是否存在。

$ kill -HUP $(pidof nginx)

常見錯誤與排錯

pidof: 沒有輸出
原因
程序未執行,或名稱不完全匹配(pidof 比 pgrep 更嚴格)。
解法
改用 pgrep -l 程序名稱 確認名稱,或用 pgrep 的子字串匹配。

延伸閱讀