[英]Check if PID exists in Bash
我想暫停 BASH 腳本的執行,直到進程關閉(我將 PID 存儲在變量中)。 我在想
while [PID IS RUNNING]; do
sleep 500
done
我見過的大多數示例都使用 /dev/null ,這似乎需要 root。 有沒有辦法在不需要root的情況下做到這一點?
非常感謝您提前!
如果$pid
正在運行, kill -s 0 $pid
將返回成功,否則返回失敗,而不實際向進程發送信號,因此您可以直接在if
語句中使用它。
wait $pid
將等待該過程,替換您的整個循環。
好像你想要
wait $pid
這將在$pid
完成時返回。
否則你可以使用
ps -p $pid
檢查進程是否還活着(這比kill -0 $pid
更有效,因為即使您不擁有 pid 它也能工作)。
您可能會尋找/proc/YOUR_PID
目錄的存在。
ps --pid $pid &>/dev/null
如果存在則返回 0,否則返回 1
我總是使用以下tail -f /dev/null --pid $PID
。 它不需要顯式循環,並且不僅限於您的 shell 的子 pid。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.