[英]jobs command result is empty when process is run through script
我需要通過 shell 腳本在后台運行 rsync,但是一旦它啟動,我需要通過 shell 監視這些作業的狀態。
腳本退出后, jobs
命令在 shell 中運行時返回空。 ps -ef | grep rsync
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:~#
可能是什么原因以及如何在rsync
在后台運行時獲取jobs
狀態? 我在網上找不到與此相關的文章。
由於您的外殼程序(您從中執行jobs
的外殼程序)沒有啟動rsync
,因此它對此一無所知。 有不同的方法來解決這個問題,但歸結為從你的 shell 啟動后台進程。 例如,您可以使用source
BASH 命令啟動您擁有的腳本,而不是在單獨的進程中執行它。 當然,您必須在最后刪除exit 1
,否則會退出您的 shell。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.