jobs命令结果通过脚本运行时为空

问题描述 投票:0回答:1

我需要通过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的状态?我找不到在线与此相关的文章。

bash shell scripting jobs
1个回答
1
投票

由于您的shell(执行jobs的shell)没有启动rsync,因此它一无所知。有多种解决方法,但可以归结为从shell启动后台进程。例如,您可以使用source BASH命令启动脚本,而不用在单独的进程中执行该脚本。当然,您必须在最后删除exit 1,因为否则会退出您的shell。

© www.soinside.com 2019 - 2024. All rights reserved.