367 Stimmen

ssh dazu bringen, einen Befehl im Hintergrund auf dem Zielrechner auszuführen

Dies ist eine Folgefrage zur Frage Wie verwendet man ssh in einem Shell-Skript? Frage. Wenn ich auf dem entfernten Rechner einen Befehl ausführen möchte, der auf diesem Rechner im Hintergrund läuft, wie bekomme ich dann den ssh-Befehl zurück? Wenn ich versuche, einfach das kaufmännische Und (&) am Ende des Befehls einzufügen, bleibt er einfach hängen. Die genaue Form des Befehls sieht wie folgt aus:

ssh user@target "cd /some/directory; program-to-execute &"

Irgendwelche Ideen? Eine Sache, die zu beachten ist, ist, dass Logins auf dem Zielcomputer immer ein Textbanner erzeugen und ich habe SSH Die Tasten sind so eingerichtet, dass kein Passwort erforderlich ist.

14voto

ijt Punkte 2856

Sie können dies auch ohne nohup tun:

ssh user@host 'myprogram >out.log 2>err.log &'

9voto

neil Punkte 97

Der schnellste und einfachste Weg ist die Verwendung des Befehls "at":

ssh user@target "at now -f /home/foo.sh"

8voto

Ich glaube, Sie müssen mehrere dieser Antworten kombinieren, um das zu bekommen, was Sie wollen. Wenn Sie nohup in Verbindung mit dem Semikolon verwenden und das Ganze in Anführungszeichen einschließen, dann erhalten Sie:

ssh user@target "cd /some/directory; nohup myprogram > foo.out 2> foo.err < /dev/null"

was bei mir zu funktionieren scheint. Mit nohup müssen Sie das & nicht an den auszuführenden Befehl anhängen. Wenn Sie die Ausgabe des Befehls nicht lesen müssen, können Sie auch

ssh user@target "cd /some/directory; nohup myprogram > /dev/null 2>&1"

um alle Ausgaben nach /dev/null umzuleiten.

6voto

fs82 Punkte 130

Das hat bei mir schon oft funktioniert:

ssh -x remoteServer "cd yourRemoteDir; ./yourRemoteScript.sh </dev/null >/dev/null 2>&1 & "

2voto

user889030 Punkte 3543

Sie können es so machen...

sudo /home/script.sh -opt1 > /tmp/script.out &

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X