La meilleure méthode consiste à démarrer le processus dans un multiplexeur de terminal. Sinon, vous pouvez empêcher le processus de recevoir le signal HUP.
Un multiplexeur de terminaux fournit des terminaux "virtuels" qui fonctionnent indépendamment du "vrai" terminal (en fait, tous les terminaux sont aujourd'hui "virtuels" mais c'est un autre sujet pour un autre jour). Le terminal virtuel continuera à fonctionner même si votre terminal réel est fermé avec votre session SSH.
Tous les processus démarrés à partir du terminal virtuel continueront à s'exécuter avec ce terminal virtuel. Lorsque vous vous reconnectez au serveur, vous pouvez vous reconnecter au terminal virtuel et tout se passera comme si rien ne s'était passé, à l'exception du temps écoulé.
Screen et tmux sont deux multiplexeurs populaires .
L'écran a une courbe d'apprentissage abrupte. Voici un bon tutoriel avec des diagrammes expliquant le concept: http://www.ibm.com/developerworks/aix/library/au-gnu_screen/
Le signal HUP (ou SIGHUP) est envoyé par le terminal à tous ses processus enfants lorsque le terminal est fermé. L’action commune à la réception de SIGHUP consiste à terminer. Ainsi, lorsque votre session ssh sera déconnectée, tous vos processus se termineront. Pour éviter cela, vous pouvez faire en sorte que vos processus ne reçoivent pas SIGHUP.
Deux méthodes faciles à suivre sont nohup
et disown
.
Pour plus d'informations sur comment nohup
et comment disown
travailler, lisez cette question et sa réponse: https://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and
Remarque: bien que les processus continuent à s'exécuter, vous ne pouvez plus interagir avec eux car ils ne sont plus liés à aucun terminal. Cette méthode est principalement utile pour les processus de traitement par lots longs qui, une fois démarrés, ne nécessitent plus aucune entrée de l'utilisateur.
screen
vous avez beaucoup plus d'options, mais si vous utilisezauthorized_keys
pour permettre aux utilisateurs d'exécuter un script à distance viassh
, l'nohup
option est un moyen simple et agréable de lancer des processus qui durent plus longtemps que lassh
session utilisée pour les démarrer. .