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 ktserverWenn 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 killBefehl beende (z. B. SIGINT oder SIGHUP senden), ktserverbleibt der Prozess am Leben.
Wie kann ich das ktserverSterben immer unabhängig davon machen, wie sshes getötet wird?
BEARBEITEN : Wenn ktserverich 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 ktserveroder kill -2 ktserverstarte, 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> readden ssh-Prozess anschließend ausgeführt und beendet habe. readwar noch am Leben und trat.
ssh example.com dd ...Aufträge ausgeführt, die auch Stunden nach dem sshUnterbrechen der Verbindung aufgrund von Netzwerkproblemen vollständig ausgeführt wurden. Wenn Sie ktserverdie Option ändern können , ab und zu etwas auszugeben, kann dies eine Problemumgehung sein.
readauf dem Remote-Computer zu laufen, und nachdem ich die SSH-Verbindung beendet habe, bin ich readnicht 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?