Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Lancer une commande en SSH qui continue son exécution après une déconnexion

Comment quitter SSH sans tuer un processus en cours d’exécution et qu’il continue de s’exécuter même si la session SSH se termine ?
Lorsque l’on travaille à distance avec SSH, il arrive que l’on souhaite qu’une tâche continue de s’exécuter même si on quitte la session SSH.
En effet lorsque nous nous déconnectons de la session ou que la session s’arrête après un certain temps d’inactivité, le signal SIGHUP est envoyé au pseudo-terminal et tous les travaux qui ont été exécutés sur ce terminal, même les travaux dont les travaux parents sont lancés sur le pseudo-terminal, reçoivent également le signal SIGHUP et sont contraints de s’arrêter.

Mais vous souhaitez faire en sorte que la commande continue son exécution après avoir quitter sa session SSH.
Sur Linux, cela est tout à fait possible et comme bien souvent, il existe plusieurs méthodes.
Dans ce tutoriel, je vous apprends à maintenir une SSH en cours d’exécution à l’aide de 4 commandes et utilitaires.

Lancer une commande en SSH qui continue son exécution après une déconnexion

Utiliser la commande screen pour maintenir les sessions SSH en cours d’exécution

GNU Screen est un autre multiplexeur de terminal très populaire sous Linux, utilisé pour gérer plusieurs sessions de terminal à partir d’une seule interface. Voici un guide pour vous aider à démarrer avec Screen.
Il se présente sous la forme d’un gestionnaire de fenêtres de texte pour Linux qui permet à l’utilisateur de gérer plusieurs sessions de terminal en même temps, de passer d’une session à l’autre, d’enregistrer les sessions en cours à l’écran, et même de reprendre la session à tout moment sans se soucier de la déconnexion de la session ou de la fermeture du terminal.

Les sessions à l’écran peuvent être démarrées puis détachées du terminal de contrôle, ce qui permet de les laisser fonctionner en arrière-plan et de les reprendre à tout moment et même à n’importe quel endroit. Il vous suffit de démarrer votre session à l’écran et, lorsque vous le souhaitez, de la détacher du pseudo-terminal (ou du terminal de contrôle) et de vous déconnecter. Lorsque vous le souhaitez, vous pouvez vous reconnecter et reprendre la session.

Commencez par installer l’utilitaire :

sudo apt install screen

Pour créer un nouveau terminal virtuel :

screen -a

Une fois la session d’écran démarrée, vous pouvez exécuter n’importe quelle commande et maintenir la session en cours en détachant la session.

Pour détacher un écran du terminal distant, il suffit d’appuyer sur “Ctrl+a” immédiatement suivi de la touche “d” et vous reviendrez au terminal en voyant le message indiquant que l’écran est détaché. Vous pouvez maintenant vous déconnecter en toute sécurité et votre session restera active.

Pour attacher à nouveau une session, tout d’abord, listez celle active :

screen ls

Puis utilisez l’option -r en spécifiant le numéro de l’identifiant ou le nom :

screen -r
screen -r <pid.tty.host>
screen linux : attacher une session

Utiliser Tmux (Terminal Multiplexer) pour maintenir les sessions SSH en cours d’exécution

Tmux est un autre logiciel multiplexeur comme alternative à screen.
Il est généralement considéré comme plus intuitif, avec des raccourcis clavier plus faciles à mémoriser (Ctrl-b comme préfixe par défaut). Il offre également des options de configuration plus conviviales et est plus facile à personnaliser.
Mais surtout, il offre une gestion robuste des fenêtres et des volets, permettant aux utilisateurs de diviser les fenêtres en plusieurs volets à la fois horizontalement et verticalement. Il est ainsi plus facile de gérer plusieurs sessions au sein d’une même fenêtre.

Installez l’utilitaire :

sudo apt install tmux

Puis exécutez l’utilitaire :

tmux

Après avoir effectué vos opérations sur le terminal, vous pouvez détacher cette session du terminal de contrôle afin qu’elle passe en arrière-plan et que vous puissiez vous déconnecter en toute sécurité.

Pour se détacher d’une session en cours, utilisez le raccourci (Ctrl+b puis d).
Vous revenez alors au terminal classique mais votre session continue d’être activé et les commandes de s’exécuter.

Pour attacher à nouveau à la session, indentiez celle-ci en listant les sessions en cours :

tmux ls

Puis utilisez la commande suivante :

tmux attach-session -t <nom/identifiant session>

Par exemple pour ré-attacher la session log :

tmux attach-session -t log

Utiliser la commande nohup pour maintenir les sessions SSH en cours d’exécution


La commande nohup est un utilitaire Unix/Linux utilisé pour exécuter un processus en arrière-plan, tout en lui permettant de continuer à s’exécuter même après que l’utilisateur se soit déconnecté du terminal. nohup signifie “no hang up” (pas de déconnexion), et il est particulièrement utile pour exécuter des commandes ou des scripts qui doivent continuer à fonctionner même si la session de terminal est fermée.

Dans cet exemple, nous lançons le téléchargement d’un fichier ISO :

nohup wget http://exemple.com/monfichier.iso &

Utiliser la commande disown pour maintenir les sessions SSH en cours d’exécution

La commande disown est utilisée dans les systèmes d’exploitation Unix et Linux pour détacher un processus d’un shell. Cela signifie qu’un processus continuera à fonctionner en arrière-plan même si le shell dans lequel il a été lancé est fermé.
Elle permet de détacher cette tâche du shell parent, empêchant ainsi la fermeture du shell de terminer la tâche.

disown wget http://exemple.com/monfichier.iso &

Vous pouvez ensuite la détacher avec :

disown -h %1

Ici, %1 fait référence au numéro de job de la tâche.


Comment continuer à exécuter un travail après avoir quitté une invite shell en arrière-plan sur Linux

Tous les travaux pour lesquels vous avez utilisé la commande disown -h continueront de fonctionner même si vous quittez la session SSH.

L’article Lancer une commande en SSH qui continue son exécution après une déconnexion est apparu en premier sur malekal.com.

Enregistrer un commentaire

0 Commentaires