Dies ist eine Frage, die nicht nur hier, sondern auch an anderen Stellen des Stack-Exchange-Netzwerks mehrfach angesprochen wurde (z. B. wie man ssh veranlasst, den Remote-Prozess zu beenden, wenn ich ssh selbst unterbreche? ). Ich kann jedoch keine der Lösungen für mich arbeiten lassen.
Ich führe einen Befehl über ssh aus. Immer wenn ich ssh beende, möchte ich, dass der Befehl ebenfalls stirbt. Dieser Befehl ist ein Daemon namens ktserver, der auf unbestimmte Zeit ausgeführt wird, bis Sie Strg-C drücken.
Ich führe es folgendermaßen aus: ssh -t compute-0-1 ktserver
Wenn ich Strg-C drücke, wird der Vorgang ordnungsgemäß beendet und die SSH-Sitzung wird beendet.
Wenn ich jedoch nicht Strg-C drücke, sondern den ssh-Prozess mit dem kill
Befehl beende (z. B. SIGINT oder SIGHUP senden), ktserver
bleibt der Prozess am Leben.
Wie kann ich das ktserver
Sterben immer unabhängig davon machen, wie ssh
es getötet wird?
BEARBEITEN : Wenn ktserver
ich stattdessen etwas völlig anderes ausführe, wie zum Beispiel gedit
, funktioniert alles wie ein Zauber (dh gedit stirbt, wenn die Verbindung unterbrochen wird). Daher ist möglicherweise etwas mit dem Prozess selbst nicht in Ordnung. Zum Beispiel dachte ich, dass es SIGHUP oder SIGINT ignorieren könnte. Wenn ich jedoch kill -1 ktserver
oder kill -2 ktserver
starte, stirbt der Prozess wie erwartet.
EDIT2 : Wie Mark Plotnick betont , hängt das Problem damit zusammen, dass auf dem SSH-Kanal keine Kommunikation zirkuliert. Ich habe bestätigt, indem ich ssh -t <host> read
den ssh-Prozess anschließend ausgeführt und beendet habe. read
war noch am Leben und trat.
ssh example.com dd ...
Aufträge ausgeführt, die auch Stunden nach dem ssh
Unterbrechen der Verbindung aufgrund von Netzwerkproblemen vollständig ausgeführt wurden. Wenn Sie ktserver
die Option ändern können , ab und zu etwas auszugeben, kann dies eine Problemumgehung sein.
read
auf dem Remote-Computer zu laufen, und nachdem ich die SSH-Verbindung beendet habe, bin ich read
nicht gestorben. Leider kann ich ktserver nicht ändern, um etwas auszugeben. Gibt es dann keine Lösung?
shopt -s huponexit
). Können Sie testen, ob dies bei Ihnen funktioniert?
kill -9 ktserver
?