Die beste Methode ist, den Prozess in einem Terminal-Multiplexer zu starten. Alternativ können Sie dafür sorgen, dass der Prozess das HUP-Signal nicht empfängt.
Ein Terminal-Multiplexer stellt "virtuelle" Terminals bereit, die unabhängig vom "realen" Terminal laufen (tatsächlich sind alle Terminals heutzutage "virtuell", aber das ist ein anderes Thema für einen anderen Tag). Das virtuelle Terminal läuft weiter, auch wenn Ihr reales Terminal mit Ihrer SSH-Sitzung geschlossen wird.
Alle vom virtuellen Terminal aus gestarteten Prozesse laufen mit diesem virtuellen Terminal weiter. Wenn Sie sich wieder mit dem Server verbinden, können Sie sich wieder mit dem virtuellen Terminal verbinden, und alles wird so, als wäre nichts passiert, außer der Zeit, die vergangen ist.
Zwei beliebte Terminal-Multiplexer sind screen und tmux .
Bildschirm hat eine steile Lernkurve. Hier ist ein gutes Tutorial mit Diagrammen, die das Konzept erläutern: http://www.ibm.com/developerworks/aix/library/au-gnu_screen/
Das HUP- Signal (oder SIGHUP) wird vom Terminal an alle untergeordneten Prozesse gesendet, wenn das Terminal geschlossen wird. Die übliche Aktion beim Empfang von SIGHUP ist das Beenden. Wenn Ihre SSH-Sitzung getrennt wird, werden alle Ihre Prozesse beendet. Um dies zu vermeiden, können Sie dafür sorgen, dass Ihre Prozesse kein SIGHUP erhalten.
Zwei einfache Methoden sind nohup
und disown
.
Weitere Informationen zu Funktionsweise nohup
und Funktionsweise finden disown
Sie in dieser Frage und Antwort: https://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and
Hinweis: Obwohl die Prozesse weiterhin ausgeführt werden, können Sie nicht mehr mit ihnen interagieren, da sie keinem Terminal mehr zugeordnet sind. Diese Methode eignet sich hauptsächlich für lange laufende Batch-Prozesse, bei denen nach dem Start keine Benutzereingaben mehr erforderlich sind.
screen
Ihnen viel mehr Optionen zur Verfügung. Wenn Sie jedoch dieauthorized_keys
Möglichkeit verwenden, ein Skript von einem Remotestandort aus auszuführenssh
, ist diesenohup
Option eine einfache Möglichkeit, mit dem Skript Prozesse zu starten, die länger dauern als diessh
Sitzung, in der sie gestartet wurden .