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 chaîne 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 chaîne 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.