GNU/Linux >> Tutoriels Linux >  >> Linux

Démarrage automatique de la session Tmux sur le système distant lors de la connexion via SSH

C'est toujours une bonne pratique d'exécuter un long processus à l'intérieur d'un Tmux session lorsque vous travaillez avec des systèmes distants via SSH. Parce que cela vous empêche de perdre le contrôle du processus en cours lorsque la connexion réseau tombe soudainement. Juste au cas où la connexion réseau serait interrompue pour une raison quelconque, les processus à l'intérieur de la session Tmux continueront de s'exécuter sur les systèmes distants, vous pouvez donc vous reconnecter à la session Tmux à l'aide de la commande "tmux attach" une fois la connexion réseau rétablie. en ligne. Que faire si vous avez oublié de démarrer la session Tmux en premier lieu ? Peu importe à quel point vous êtes prudent, vous pouvez parfois oublier 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 à partir de 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 localement ou à distance via SSH à partir d'un autre système.

Démarrage automatique de la session Tmux sur le système distant lors de la connexion via SSH

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

$ 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 redirigé vers une nouvelle session Tmux nommée 'default' .

Maintenant, démarrez n'importe quel processus dans la session Tmux et détachez-le en appuyant sur Ctrl+b suivi de d . Le processus continuera à s'exécuter dans la session Tmux même après la suppression 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 travail est toujours en cours d'exécution !!

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

Permettez-moi de clarifier ce que je viens de faire dans la sortie ci-dessus.

  1. Je me connecte à mon serveur Ubuntu distant via SSH depuis mon système local. Une nouvelle session Tmux nommée "default" est automatiquement démarrée.
  2. Dans la session Tmux, j'exécute une commande (par exemple, watch grep \"cpu MHz\" /proc/cpuinfo) pour surveiller la vitesse du processeur.
  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 à l'aide de la commande "tmux ls" et quitte la session SSH.
  5. Enfin, je me reconnecte au système distant via SSH et vérifie si le processus continue de s'exécuter dans 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 de votre système distant. ou ~/.bash_profile fichier.

Cette astuce simple vous aide à éviter de perdre le contrôle de vos tâches à distance. Vous n'avez pas toujours besoin de démarrer manuellement Tmux à chaque fois. Faites 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.

Suggestion de lecture  :

  • Comment démarrer automatiquement une session d'écran sous Linux lors de la connexion
  • Reptyr – Déplacer un processus en cours d'exécution d'un terminal à un autre sans le fermer

Linux
  1. 5 façons de maintenir les sessions et les processus SSH à distance en cours d'exécution après la déconnexion

  2. Ssh - Comment exécuter un script immédiatement après la connexion via Ssh ?

  3. API de socket Tmux ?

  4. Ctrl-c Gestion en session Ssh ?

  5. Comment envoyer des données au presse-papiers local à partir d'une session SSH distante

Comment exécuter des commandes Linux sur un système distant via SSH

Comment démarrer automatiquement une session d'écran sous Linux lors de la connexion

Exécuter des commandes sur des systèmes Linux distants via SSH

SSHFS :montage d'un système de fichiers distant via SSH

Comment maintenir les sessions SSH à distance en cours d'exécution après la déconnexion

Comment puis-je me déconnecter d'une session SSH ouverte et distante ?