Wie kann ich ssh verwenden, um einen Befehl auf einem Unix-Computer auszuführen und zu beenden, bevor der Befehl ausgeführt wird?
Zum Beispiel, wenn ich tippe
ssh localhost 'sleep 60 &'
ssh bleibt an meinem Terminal hängen, bis der Ruhezustand abgeschlossen ist, obwohl der Ruhezustand im Hintergrund ausgeführt wird.
&
Äußere der Anführungszeichen.Antworten:
SSH hat einen -f-Schalter, der genauso funktioniert wie nohup auf Ihrem Client, aber es ermöglicht, dass ssh nach einem Passwort fragt. Benutze es so:
Aber : SSH wird weiterhin im Hintergrund ausgeführt. Wenn Sie also den Client herunterfahren, bevor der Befehl auf dem Server ausgeführt wurde, wird er abgebrochen. Wenn Sie möchten, dass die ssh-Verbindung nach Ausführung des Befehls geschlossen wird, können Sie den Bildschirm auf der Serverseite verwenden:
quelle
Verwenden Sie die Umleitung nohup, stdout / stderr und führen Sie den Befehl im Hintergrund aus:
EDIT: Oder noch besser, verwenden Sie einfach den Parameter -f von ssh:
quelle
&>/dev/null
.Oder
ssh
startenscreen
Sie nach dem Anmelden mit , wenn Sie später wiederkommen möchten, um den Fortschritt oder die Ausgabe zu überprüfen.quelle