Diese Frage hat kommen ganz eine Menge ( wirklich viel ), aber ich finde die Antworten im Allgemeinen unvollständig. Die allgemeine Frage lautet: "Warum wird / wird mein Job nicht getötet, wenn ich ssh verlasse / töte?", Und hier ist, was ich gefunden habe. Die erste Frage lautet: Wie allgemein sind die folgenden Informationen? Das Folgende scheint für das moderne Debian-Linux zu gelten, aber mir fehlen einige Teile. und was müssen andere wissen?
Alle untergeordneten Prozesse einer Shell, die über eine SSH-Verbindung geöffnet wurde oder nicht, werden mit SIGHUP beendet, wenn die SSH-Verbindung nur geschlossen wird , wenn die
huponexit
Option gesetzt ist: Ausführen,shopt huponexit
um festzustellen, ob dies der Fall ist.Wenn dies
huponexit
zutrifft, können Sie den Prozess verwendennohup
oderdisown
von der Shell trennen, damit er beim Beenden nicht beendet wird. Oder führen Sie Dinge mitscreen
.Wenn
huponexit
falsch ist, was der Standard ist auf zumindest einige in diesen Tagen Linuxe, dann backgrounded Arbeitsplätze nicht auf normalen Abmelde getötet werden.Aber selbst wenn
huponexit
falsch ist, dann , wenn die SSH - Verbindung wird getötet , oder Tropfen (anders als normal Logout), dann backgrounded Prozesse werden noch getötet werden. Dies kann durchdisown
odernohup
wie in (2) vermieden werden .Es gibt einen gewissen Unterschied zwischen (a) Prozessen, deren übergeordneter Prozess das Terminal ist, und (b) Prozessen, bei denen stdin, stdout oder stderr mit dem Terminal verbunden sind . Ich weiß nicht, was mit Prozessen passiert, die (a) und nicht (b) sind oder umgekehrt.
Letzte Frage: Wie kann ich Verhalten vermeiden (3)? Mit anderen Worten, standardmäßig werden in Debian-Hintergrundprozessen nach dem Abmelden fröhlich von selbst ausgeführt, jedoch nicht, nachdem die SSH-Verbindung unterbrochen wurde. Ich möchte, dass bei Prozessen dasselbe passiert, unabhängig davon, ob die Verbindung normal geschlossen oder unterbrochen wurde. Oder ist das eine schlechte Idee?
Bearbeiten: Eine andere, wichtige Möglichkeit, um zu verhindern, dass Jobs getötet werden, die in beiden Fällen funktioniert (?), Besteht darin, sie über den Bildschirm auszuführen . Bei der Frage geht es jedoch mehr darum zu verstehen, wann Dinge getötet werden und wann nicht: Manchmal möchten die Leute, dass die Jobs zum Beispiel beim Abmelden getötet werden.
Weitere Themen : - Erläuterung zu Signalen (Seufzen), Jobs und dem steuernden Terminal - /server/117152/do-background-processes-get-a-sighup-when-logging-off - SSH fortsetzen Hintergrundaufgabe / Jobs beim Schließen von SSH - Wird ein im Hintergrund platzierter Job nach dem Schließen einer SSH-Sitzung weiter ausgeführt? - Verhindern, dass ein bereits laufender Hintergrundprozess nach dem Schließen des SSH-Clients gestoppt wird. - Wie kann ich einen Prozess über SSH starten, damit er nach dem Trennen der Verbindung weiter ausgeführt wird? - Remote-Job kann unter OS X nicht ausgeführt werden. - SSH-Verbindung schließen