如何在shell腳本中監控每個指令的pid?

如何在shell腳本中監控每個指令的pid?

在我的情況下,我有一個 shell 腳本在後台運行 rsync 和 tar。 rsync用於傳輸文件,rsync完成後tar正在做壓縮。我的問題是如何監視rsync的pid,並告訴tar指令在rsync的pid不再存在時啟動。

shell 腳本可能如下圖所示:

rsync data.log B/ &
tar data.tar.gz B/data.log &

答案1

這很簡單:您需要使用以下方式儲存 pid 變數:

PID_1=$!

要檢查 id 進度是否仍在運行,只需繼續執行kill -0,如下所示:

while True:
     if [ 'kill -0 $PID_1' -eq 0 ]; then
         echo Process still running
     else
         echo process done

(如果程式碼不能正常運作 - 我非常抱歉。我一直在床上寫:-))

解釋一下:「kill -0 $PID_1」傳回 0 或明顯是 1。您可以使用“echo $?”檢查返回代碼。

我希望這有幫助。

相關內容