在我的情況下,我有一個 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 $?”檢查返回代碼。
我希望這有幫助。