我正在创建一个python脚本,它使用子进程运行rsync,然后获取stdout并打印它。 该脚本使用以下代码在conf文件上运行多个rsync进程:
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)
我认为这可能不是最好的做法-在同一时间运行多个同步。我如何设置这个程序,以便在下一个进程开始之前等待一个进程完成?在
你可以在这里找到我的完整脚本:https://github.com/danielholm/BareShare/blob/master/bareshare.py
编辑:那我怎么做呢self.rsyncRun公司做完就死?当rsync处理完所有的文件时,它似乎在继续,尽管它不应该这样做。在
呼叫
将阻止主进程,直到
rsyncRun
进程完成。在如果不希望主进程阻塞,则生成一个线程来处理对
^{pr2}$subprocess.Popen
的调用:相关问题 更多 >
编程相关推荐