如何监视shell脚本中每个命令的pid?

在我的情况下,我有一个shell脚本在后台运行rsync和焦油。 rsync是用来传输文件的,tar是在rsync完成后进行压缩的。 我的问题是如何监视rsync的PID,并告诉当rsync的PID不再存在时启动tar命令。

shell脚本可能如下所示:

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

它很容易:你需要存储pidvariables:

 PID_1=$! 

为了检查ID进度仍在运行,就像kill -0一样继续:

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

(如果代码不能正常运行 – iam非常抱歉,我一直在床上写:-))

为了说明:'kill -0 $ PID_1'返回0或显然是1.如果它的0进程正在运行,并且如果它的进程完成了。 你可以用'echo $?'来检查返回码。

我希望这有帮助。