Bash 通过脚本运行进程时,jobs命令结果为空
我需要通过shell脚本在后台运行rsync,但一旦它启动,我需要通过shell监控作业的状态Bash 通过脚本运行进程时,jobs命令结果为空,bash,shell,scripting,jobs,Bash,Shell,Scripting,Jobs,我需要通过shell脚本在后台运行rsync,但一旦它启动,我需要通过shell监控作业的状态 作业命令在脚本退出后在shell中运行时返回空ps-ef | grep rsync显示rsync仍在运行 我可以通过脚本检查状态,但我需要多次运行脚本,以便它使用不同的ip.txt文件来推送。因此,我无法运行脚本来检查作业的状态 以下是脚本: for i in `cat $ip.txt`; do rsync -avzh $directory/ user@"$i":/cygdrive/c/te
作业
命令在脚本退出后在shell中运行时返回空ps-ef | grep rsync
显示rsync仍在运行
我可以通过脚本检查状态,但我需要多次运行脚本,以便它使用不同的ip.txt
文件来推送。因此,我无法运行脚本来检查作业的状态
以下是脚本:
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脚本退出后,作业
命令的输出为空:
root@host001:~# jobs
root@host001:~#
原因是什么?当
rsync
在后台运行时,如何获取jobs
的状态?我在网上找不到与此相关的文章。因为您的shell(执行作业的shell)没有启动rsync
,所以它对它一无所知。解决这个问题有不同的方法,但归根结底是从shell开始后台进程。例如,您可以使用source
BASH命令启动脚本,而不是在单独的进程中执行它。当然,您必须在最后删除退出1
,否则将退出shell。您能给我一个源代码命令的示例吗?我尝试了源rsync-avzh abcduser@host001:/cygwin/c/abcd
但它会抛出以下错误源:/usr/bin/rsync:无法执行二进制文件
。它像源代码/script.sh
?不能像source rsync-avzh…
那样使用它吗?从脚本中删除exit 1
,然后通过执行source myscript
或更短的来运行它。myscript
(这是一个点)。在shell中键入帮助源代码。