Recherche de site Web

Démarrer automatiquement une session Tmux sur un système distant lors de la connexion via SSH


En tant qu'administrateur système, vous pouvez accéder fréquemment à vos serveurs distants via SSH. Dans ce bref guide, je vais expliquer pourquoi et comment d'automatiser le démarrage d'une session Tmux sur un système distant lors de la connexion via SSH sous Linux.

Introduction

Il est toujours bon de lancer un processus de longue durée à l'intérieur d'une session Tmux lorsque vous travaillez avec des systèmes distants via SSH. En effet, cela vous empêche de perdre le contrôle du processus en cours lorsqu'une connexion réseau est soudainement interrompue.

Au cas où la connexion réseau serait interrompue pour une raison quelconque, les processus à l'intérieur de la session Tmux continueront de fonctionner sur les systèmes distants, vous pouvez donc vous rattacher à la session Tmux en utilisant la commande « tmux attach » une fois que la connexion réseau est rétablie.

D'accord, mais que se passe-t-il si vous avez oublié de démarrer la session Tmux au départ ? Peu importe à quel point nous sommes prudents, parfois nous oublions de démarrer la session Tmux. Voici un moyen simple d'éviter ce problème. Vous pouvez démarrer automatiquement la session Tmux sur les systèmes distants lors de la connexion via SSH.

Ceci est particulièrement utile si vous avez perdu la connexion réseau lors de la mise à niveau d'un serveur Linux distant via SSH depuis votre système local.

Veuillez noter que l'astuce suivante démarrera automatiquement une session Tmux chaque fois que vous essayez de vous connecter à votre système Linux, que ce soit localement ou à distance via SSH depuis un autre système.

Démarrer automatiquement une session Tmux sur un système distant lors de la connexion via SSH

Pour démarrer automatiquement une session Tmux lors de la connexion via SSH, éditez le fichier ~/.bash_profile de votre système distant :

$ nano ~/.bash_profile

Si le fichier n'est pas disponible, créez-le simplement.

Et ajoutez-y les lignes suivantes :

if [ -z "$TMUX" ]; then
    tmux attach -t default || tmux new -s default
fi

Enregistrez et fermez le fichier. Déconnectez-vous et reconnectez-vous aux systèmes distants. Vous serez automatiquement placé dans une nouvelle session Tmux nommée 'default'.

Maintenant, lancez n'importe quel processus à l'intérieur de la session Tmux et détachez-le en appuyant sur Ctrl+b suivi de d. Le processus continuera de s'exécuter à l'intérieur de la session Tmux même après la coupure de la connexion réseau. Une fois la connexion réseau rétablie, connectez-vous en SSH au système distant et vous verrez que le processus est toujours en cours d'exécution !!

Jetez un œil à la sortie animée suivante :

Démo Visuelle - Démarrage Automatique d'une Session Tmux sur un Système Distant Lors de la Connexion via SSH

Laissez-moi expliquer ce que je viens de faire dans les étapes précédentes.

  1. Je me connecte à mon serveur Ubuntu distant via SSH depuis mon système local. Une nouvelle session Tmux nommée « default » démarre automatiquement.
  2. À l'intérieur de la session Tmux, j'exécute une commande (Ex. watch grep \"cpu MHz\" /proc/cpuinfo) pour surveiller la vitesse du CPU.
  3. Ensuite, je me suis détaché de la session en appuyant sur Ctrl+b et d.
  4. Et ensuite, je liste les sessions Tmux en utilisant la commande « tmux ls » et je quitte la session SSH.
  5. Enfin, je me reconnecte au système distant via SSH et je vérifie si le processus continue de fonctionner à l'intérieur de la session Tmux sans aucune interruption.

J'espère que vous comprenez.

Pour arrêter le démarrage automatique de la session Tmux, supprimez simplement les lignes ajoutées précédemment dans le fichier ~/.bashrc ou ~/.bash_profile de votre système distant.

Ce conseil simple vous aide à éviter de perdre le contrôle de vos travaux à distance. Vous n'avez pas toujours besoin de lancer Tmux manuellement à chaque fois. Faites simplement en sorte que Tmux démarre automatiquement chaque fois que vous vous connectez en SSH à un système distant, comme décrit dans ce guide.

Lecture suggérée :

  • Améliorer la connexion SSH avec un menu de sélection de session Tmux sous Linux
  • Comment démarrer automatiquement une session Screen sur Linux lors de la connexion
  • Reptyr – Déplacer un processus en cours d'exécution d'un terminal à un autre sans le fermer