Utiliser tmux pour administrer l'infrastructure
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.
Présentation
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.
Note:
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
.
Gestion de sessions
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).
Multiplexage
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
.
Recommandations
Important:
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.
Aller plus loin
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.