Nohup über ssh wird nicht zurückkehren

11

Ich versuche es zu tun

[me@myPc]$ ssh me@server "nohup myBashScript.sh &"

Mein Ziel ist es, den Prozess auf dem Server zu starten und dann sofort zurückzukehren.

Es funktioniert nicht: Der Job wird auf dem Server gestartet, aber ich erhalte immer noch die Ausgabe auf myPc und bash warte auf den Abschluss, bevor ich nach einem anderen Befehl gefragt werde.

Warum ? Das soll es nicht! Wie kann man das vermeiden?

  • myPc ist RHEL6.2
  • Server ist ubuntu 10.04und
  • beide Läufe openssh
user1219721
quelle

Antworten:

12

Solange der Ein- oder Ausgang noch offen ist, hält ssh die Verbindung offen. Stellen Sie zur Lösung dieses Problems sicher, dass der Ein- und Ausgang nicht geöffnet ist.

Verwenden ssh -nund leiten Sie beispielsweise Ihre Ausgabe um:

ssh -n [email protected] "nohup myscript.sh >/dev/null 2>&1 &"
Michael Hampton
quelle
Was ist, wenn ich immer noch myscript.sheine Ausgabe geben möchte , die SSH-Sitzung jedoch nach Abschluss des Skripts immer noch beendet werden soll? In meinem Fall startet das Skript selbst den Nohup-Prozess und kehrt dann zurück. Ich hatte den Eindruck, das ssh -Twürde mir dabei helfen.
Gauthier
@Gauthier Dann führen Sie einfach das Skript ohne nohup aus.
Michael Hampton
Ich mache. Das Skript startet andere Befehle mit nohup und & und wird dann beendet. Aber ssh kehrt nicht zurück. Die im Skript aufgerufenen Befehle leiten stdout in Dateien um. Oh, aber nicht stderr und stdin, könnte es sein, warum?
Gauthier
Hier hast du es! Eingabe und Ausgabe müssen umgeleitet werden.
Michael Hampton
Was ich nicht verstehe ist, dass ich mich von der ssh-Sitzung abmelden darf, wenn ich mich tatsächlich anmelde und ein tty erhalte, das Skript starte, das die nohup & -Befehle startet. Es wird nicht beanstandet, dass es offene Ein- und Ausgänge gibt. Ist es nicht das, was ssh -tnachahmen soll?
Gauthier