Mein Ziel ist einfach: Kick Rsync und nicht warten.Hintergrundprozess in Python ausführen und nicht warten
Python 2.7.9 auf Debian
Beispielcode:
rsync_cmd = "/usr/bin/rsync -a -e 'ssh -i /home/myuser/.ssh/id_rsa' {0}@{1}:'{2}' {3}".format(remote_user, remote_server, file1, file1)
rsync_cmd2 = "/usr/bin/rsync -a -e 'ssh -i /home/myuser/.ssh/id_rsa' {0}@{1}:'{2}' {3} &".format(remote_user, remote_server, file1, file1)
rsync_path = "/usr/bin/rsync"
rsync_args = shlex.split("-a -e 'ssh -i /home/mysuser/.ssh/id_rsa' {0}@{1}:'{2}' {3}".format(remote_user, remote_server, file1, file1))
#subprocess.call(rsync_cmd, shell=True) # This isn't supposed to work but I tried it
#subprocess.Popen(rsync_cmd, shell=True) # This is supposed to be the solution but not for me
#subprocess.Popen(rsync_cmd2, shell=True) # Adding my own shell "&" to background it, still fails
#subprocess.Popen(rsync_cmd, shell=True, stdin=None, stdout=None, stderr=None, close_fds=True) # This doesn't work
#subprocess.Popen(shlex.split(rsync_cmd)) # This doesn't work
#os.execv(rsync_path, rsync_args) # This doesn't work
#os.spawnv(os.P_NOWAIT, rsync_path, rsync_args) # This doesn't work
#os.system(rsync_cmd2) # This doesn't work
print "DONE"
(Ich habe nur die Ausführungsbefehle kommentiert, weil ich eigentlich bin alle meine Versuche in meinem Code zu halten, so dass ich Ich weiß, was ich getan habe und was ich nicht getan habe. Offensichtlich würde ich das Skript mit der richtigen Zeile unkommentiert ausführen.)
Was passiert ist das ... Ich kann die Übertragung auf dem Server und wann es ist fertig, dann bekomme ich eine "FERTIG" auf den Bildschirm gedruckt.
Was ich möchte passieren, ist eine "DONE" gedruckt unmittelbar nach der Ausgabe der rsync
Befehl und für den Transfer zu starten.
Scheint sehr geradlinig. Ich habe ALLE Vorschläge der Interwebs ausprobiert und ich habe NICHTS gefunden, das für mich funktioniert.
Vielen Dank für die Zeit.
(Ich bin sicher, jeder wird "Dies ist ein Duplikat" anbieten, aber jeder Eintrag, den ich in der gesamten StackExchange-Community gefunden habe, scheitert. Wenn du einen hast, den ich ausprobieren soll, gib ihn bitte weiter . entlang, bevor Sie denken, dies ist ein Duplikat)
Scheint die Frage beantwortet wird [hier] (http://stackoverflow.com/a/2251026/3070670) –
@ viach Zeiger ist Ihre beste Wette. – WreckeR
[Dieser] (http://stackoverflow.com/questions/3516007/run-process-and-dont-wait#comment19551411_6700359) sagt "creationflags" ist nur Windows. Der Link, den Sie angegeben haben, spricht auch über Win32. – harperville