我正在創建一個使用子進程運行rsync的python腳本,然後獲取stdout並將其打印出來。 運行該腳本使用此代碼對conf文件多張rsync的過程基地:在foreach循環中運行多個子進程?一次?
for share in shares.split(', '):
username = parser.get(share, 'username')
sharename = parser.get(share, 'name')
local = parser.get(share, 'local')
remote = parser.get(share, 'remote')
domain = parser.get(share, 'domain')
remotedir = username+"@"+domain+":"+remote
rsynclog = home + "/.bareshare/"+share+"rsync.log"
os.system("cp "+rsynclog+" "+rsynclog+".1 && rm "+rsynclog) # MOve and remove old log
rsync="rsync --bwlimit="+upload+" --stats --progress -azvv -e ssh "+local+" "+username+"@"+domain+":"+remote+" --log-file="+rsynclog+" &"
# Run rsync of each share
# os.system(rsync)
self.rsyncRun = subprocess.Popen(["rsync","--bwlimit="+upload,"--stats","--progress","-azvv","-e","ssh",local,remotedir,"--log-file="+rsynclog], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
我thinkg,這未必是最好的事情 - 在森那時間運行多個同步。我怎麼能設置這個,讓我等待一個過程在下一個過程開始之前完成?
你可以找到我這裏完整的腳本:https://github.com/danielholm/BareShare/blob/master/bareshare.py
編輯:我如何讓完成後self.rsyncRun死嗎?當rsync與所有文件完成時,它似乎仍然繼續,儘管它不應該這樣做。
檢查出['Queue'(HTTP://文檔。 python.org/library/queue.html)模塊。 – aganders3