linux利用shell監聽某個程式是否完成
阿新 • • 發佈:2020-12-14
應用場景:希望檢測某個程式是否已經執行完成,一旦完成,則執行其他程式。
(1)首先通過ps u
檢視當前使用者下的所有程式的程序,選擇你要監聽的程序號,比如9160。
注意:ps a
是檢視當前使用者所執行的所有程式程序,不包括其他使用者;ps aux
是檢視所有程序,包括其他使用者。
(2)編寫shell程式碼,實現監聽
flag=1
result=1
while [ "$flag" -eq 1 ]
do
sleep 1s
PID=9160
PID_EXIST=$(ps u | awk '{print $2 }'| grep -w $PID)
if [ ! $PID_EXIST ]; then
echo "process is finished"
flag=0
fi
done
在此後新增希望執行的程式,比如bash..., python ...等等。
awk '{print $2}'
表示取出第二個欄位,也就是程序號欄位;
grep -w $PID
表示精確匹配所需要監聽的程序號;
PID_EXIST
表示匹配到就返回pid號,說明程式還在執行。匹配不到就沒有返回值,說明程式已經完成,退出迴圈。