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 的子字串匹配。