我需要通过Shell脚本在后台运行rsync,但是一旦启动,我需要通过Shell监视该作业的状态。
jobs
命令在脚本退出后在shell中运行时返回空。 ps -ef | grep rsync
显示rsync仍在运行。
我可以通过脚本检查状态,但是我需要多次运行脚本,因此它使用不同的ip.txt
文件来推送。因此,我无法运行脚本来检查jobs
状态。
这里是脚本:
for i in `cat $ip.txt`; do
rsync -avzh $directory/ user@"$i":/cygdrive/c/test/$directory 2>&1 > /dev/null &
done
jobs; #shows the jobs status while in the shell script.
exit 1
shell脚本退出后,jobs
命令的输出为空:
root@host001:~# jobs
root@host001:~#
[原因可能是什么,当jobs
在后台运行时如何获得rsync
的状态?我找不到在线与此相关的文章。
由于您的shell(执行jobs
的shell)没有启动rsync
,因此它一无所知。有多种解决方法,但可以归结为从shell启动后台进程。例如,您可以使用source
BASH命令启动脚本,而不用在单独的进程中执行该脚本。当然,您必须在最后删除exit 1
,因为否则会退出您的shell。