tmux

Le but de cette page est de présenter tmux(1), d'expliquer les bases de son utilisation et d'exposer nos recommandations quant à son utilisation sur l'infrastructure de Picasoft. Elle ne présentera pas (du moins pour l'instant) son utilisation avancée et sa personnalisation.

tmux est un multiplexeur de terminaux similaire à GNU Screen, qui permet également de gérer des sessions. Cela signifie qu'il permet de découper une même fenêtre de terminal en plusieurs sections et de faire persister les sessions SSH même en cas de déconnexions, volontaires ou accidentelles.

tmux est exécuté sur l'hôte sur lequel se trouve la session concernée. Des cas d'usage courants comportent : - l'utiliser sur un serveur pour stabiliser une session et ne pas risquer de la perdre ; - l'utiliser sur un serveur pour avoir accès à plusieurs shells sans lancer de multiples connexions/utiliser plusieurs fenêtres de terminaux ; - l'utiliser en local pour faire persister un processus après avoir fermé un terminal ; - l'utiliser en local comme un gestionnaire de fenêtres terminal.

tmux est contrôlé de deux manières : avec des raccourcis et avec des commandes. Les deux sont équivalents mais leur utilisation peut être plus ou moins adaptée selon le contexte (e.g. script vs utilisation interactive). Les raccourcis utilisent un préfixe, similaire en concept à la touche <Leader> de Vim, qui est par défaut C-b (Ctrl-b).

Les commandes tmux peuvent être abrégées tant qu'elles sont déterminables avec la version raccourcie. Ainsi tmux a et tmux attach-session sont équivalents, comme tmux detach et tmux det.

Il suffit de lancer tmux sur un hôte pour créer une session utilisant $SHELL. Une barre de statut apparaît alors, comportant des informations sur la session comme son nom, celui du processus courant, le nom de l'hôte et la date. Si le terminal est fermé, cette session n'est pas perdue. Pour la récupérer, il suffit de lancer tmux attach sur le même hôte.

Il est également possible de passer explicitement une session en arrière-plan avec tmux detach ou le raccourci C-b d. Les processus de cette session persistent et on peut à nouveau se rattacher à la session avec tmux attach.

Il est possible d'avoir plusieurs sessions en parallèle. Elles sont alors listables avec tmux ls ou C-b s. Pour se connecter à une session en particulier, il suffit d'utiliser tmux attach -t <name> ou d'utiliser le menu de C-b s. L'id d'une session peut-être changé avec tmux rename <new-name> ou C-b $.

tmux kill-session permet de terminer une session.

Il est à noter que la plupart des commandes tmux agissent sur la session courante, mais qu'il est possible d'en cibler une autre avec l'option -t (pour target).

tmux permet également de présenter à l'utilisateur plusieurs fenêtres et panneaux dans un même terminal. Une fenêtre est un ensemble de panneaux, occupant chacun une partie du terminal. On pourrait par exemple avoir au sein d'une même session :

  • une fenêtre avec deux panneaux : un à gauche avec Vim et un droite avec mutt
  • une autre avec trois panneaux : un un gauche avec top, un en haut à droite avec bash et un en bas à droite avec le tail d'un journal

Il est possible de créer un panneau vertical avec C-b %, un horizontal avec C-b ", de changer de panneau avec C-b o, d'en supprimer un avec C-b x, de créer une fenêtre avec C-b c et d'en changer avec C-b n.

Nous encourageons fortement l'utilisation de tmux au sein des connexions SSH, surtout lors de l'exécution de commandes ayant un impact important sur le système ou si la qualité de la connexion est faible. Cela réduit par exemple le risque de laisser le système dans un état instable si la connexion SSH tombe pendant une mise à jour.

La page man de tmux contient d'autres commandes et raccourcis permettant une utilisation plus avancée ainsi que des explications sur sa configuration. Il est notamment possible d'utiliser des raccoucis par défaut inspirés par vi plutôt qu'Emacs, de configurer la barre de statut et de personnaliser les différents raccourcis.

  • tmux.txt
  • Dernière modification: 2019/06/17 11:41
  • par cbarrete