簡體   English   中英

當進程通過腳本運行時,jobs 命令結果為空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM