Table of contents

tmux

GNU Screen vs tmux

Screen tmux
Préfixe de commande par défaut C-a C-b
Créer une nouvelle session nommée “blah” screen -S blah tmux new -s blah
Attacher la session en cours “blah” screen -x blah tmux new -t blah
Rattacher la session détachée “blah” screen -r blah tmux attach -t blah
Lister les sessions actives screen -ls tmux ls
Détacher la session en cours C-a d C-b d
Créer une nouvelle fenêtre C-a c C-b c
Renommer la fenêtre active C-a A C-b ,
Afficher la liste des fenêtres dans la session en cours C-a " C-b w
Forcer la fermeture de la fenêtre active C-a k C-b &
Retourner à la dernière fenêtre utilisée C-a C-a C-b l

Utilisation courante

Gestion des panneaux (“panes”)

Note : une fenêtre contient au minimum un panneau.

Diviser un panneau horizontalement C-b "
Se déplacer entre les panneaux d'une fenêtre C-b o ou C-b <touche fléchée> vers le panneau désiré
Fermer le panneau courant C-b x
Inverser deux panneaux C-b { ou C-b }
Afficher les informations sur les panneaux actuels (numéro, dimensions) C-b q

Copy mode

Comme avec GNU Screen, il n'est pas possible de remonter l'historique d'une fenêtre (scrollback) via directement la molette de la souris ou <Ctrl>+<PageUp>. Pour accéder au scrollback d'une fenêtre, il faut passer en copy mode en tapant la séquence C-b [ : l'indicateur de positionnement dans le scrollback s'affiche alors en haut à droite du panneau courant. Tapez sur la touche Enter pour quitter le copy mode.

Voici comment réaliser les actions de base en copy mode :

Se déplacer vers la droite l ou touche fléchée droite
Se déplacer d'une ligne vers le haut k ou touche fléchée haut
Se déplacer d'une ligne vers le bas j ou touche fléchée bas
Se déplacer d'un écran vers le bas C-f ou <PageDown>
Se déplacer d'un écran vers le bas C-b ou <PageUp>
Rechercher la chaine de caractères “blah” vers le haut ?blah<Enter> puis n pour parcourir les résultats suivants ou N pour les précédents
Rechercher la chaine de caractères “blah” vers le bas /blah<Enter> puis n pour parcourir les résultats suivants ou N pour les précédents
Copier un extrait de texte Tapez sur <Space> au début de la section à copier, puis déplacez le curseur jusqu'à la fin de la section et tapez sur <Enter> pour enregistrer la copie
Coller un extrait de texte C-b ]

Trucs & astuces

Réarranger les panneaux de la fenêtre courante

Lorsque votre fenêtre courante est divisée en panneaux, tmux vous permet de réarranger ces derniers selon plusieurs modèles pré-établis en tapant la séquence C-b <Space> (le nom du modèle appliqué s'affiche alors brièvement dans la barre de statut).

Redimensionner manuellement un panneau de la fenêtre courante

Une fois un modèle d'arrangement des panneaux appliqué, il est possible de modifier la taille de chaque panneau individuellement. Pour ce faire, placez-vous dans le panneau dont vous souhaitez ajuster les dimensions, et tapez la séquence C-b puis maintenez la touche <Control> et appuyez sur une touche fléchée correspondant à la direction vers laquelle vous souhaitez étendre le panneau ; tant que vous ne relâchez pas la touche <Control>, il est possible d'ajuster la taille du panneau (dans un sens comme dans l'autre).

Transformer un panneau en fenêtre

Si vous souhaitez isoler un panneau d'une fenêtre pour en faire une fenêtre à part entière, placez-vous sur ce dernier et tapez la séquence C-b !.

Ré-attacher automatiquement une session en se connectant en SSH

En se connectant à ses systèmes distants via SSH il peut arriver de subir des déconnexions intempestives, en particulier si on utilise un réseau Wi-Fi au signal faible. tmux se révèle très pratique dans ce genre de cas pour éviter de perdre sa session. Mieux encore, il est possible d'automatiser le lancement/réattachement d'une session tmux dès que vous vous logger en SSH à un système distant en ajoutant ces quelques lignes dans votre configuration de shell ̣(la conf suivante est valable pour Bash, mais il est facile de la transcrire pour votre shell favori) :

if [[ -z "$TMUX" && -n "$SSH_TTY" ]]; then
    tmux has-session &> /dev/null
    if [ $? -eq 1 ]; then
      exec tmux new
      exit
    else
      exec tmux attach
      exit
    fi
fi

Ré-attacher une session “perdue”

Il arrive dans certaines circonstances que tmux refuse la connexion à une session existante (message failed to connect to server: Connection refused), par exemple lorsque la socket de la session a été accidentellement supprimée. Pour contourner ce problème, il est possible d'envoyer le signal USR1 au processus tmux afin qu'il recréé la socket :

killall -s SIGUSR1 tmux
tmux attach

Synchroniser l'envoi de commandes dans plusieurs panneaux

Il peut être pratique d'envoyer des commandes identiques à plusieurs panneaux, par exemple lorsque vous administrez plusieurs serveurs distants simultanément. Pour activer la synchronisation au cours d'une session, entrez la commande <C-b> :setw synchronize-panes (ré-entrez la même commande pour la désactiver).

“Zoomer” sur un panneau

Lorsqu'une fenêtre est découpée en plusieurs panneaux il est possible de temporairement “zoomer” sur l'un d'eux avec la séquence C-b z, ce qui a pour effet de le redimensionner afin d'occuper tout l'espace de la fenêtre. Pour “dé-zoomer”, retapez la séquence C-b z et la fenêtre retrouvera son organisation multi-panneaux initiale.