Tmux
WTF ?
Tmux est un terminal que l'on peut lancer, pour ensuite s'en détacher, s'y rattacher, etc.
Cas d'utilisation:
- travailler à distance avec une connexion de mauvaise qualité: la connexion saute, on la relance, on se rattache au tmux, on retrouve ses commandes et ses fichiers
- travailler à distance, lancer des commandes qui durent longtemps: on lance la commande dans un tmux, on se détache du tmux, on se déconnecte, la commande tourne toujours.
- travailler à plusieurs: un participant lance un tmux, les autres s'y attachent. La session est partagée.
Installation
yum install tmux
Configuration
Pour notre besoin, pas nécessaire.
Utilisation de base
Lancer un tmux:
L'option -s permet de //nommer// notre tmux
tmux new -s tmux1
Se rattacher à un tmux existant:
tmux at -t tmux1
Lister les tmux existants
tmux ls
Créer une nouvelle fenêtre
Par défaut, on se retrouve avec un tmux comportant 1 seule fenêtre, mais on peut en créer plusieurs, dans des "onglets"
contrôle+b c
Se déplacer d'une fenêtre à l'autre
Pour passer d'un "onglet" à l'autre, 2 possibilités:
- contrôle+b N #N étant le n° de la fenêtre à atteindre
- contrôle+b j ou l # j pour aller à la fenètre de gauche, l pour aller à celle de droite - cf les commandes de déplacement dans Vi
Fermer une fenêtre ou un tmux
Se déconnecter d'une fenêtre tmux va la fermer.
Fermer la dernière fenêtre tmux va fermer celui-ci
Mais il est peut-être préférable de s'en détacher
Se détacher d'un tmux
contrôle+b d
Scroller
contrôle+b [ permet de passer en mode scrolling, visible via un compter jaune en haut à droite de l'écran
puis pageUp ou pageDown, ⬆️ ou ⬇️
q permet de quitter le mode "scrolling"
Utilisation avancée
Travailler à plusieurs
Un utilisateur va créer le tmux: tmux -S /tmp/shared_tmux new -s shared #-S permet de spécifier le socket, un réglage de permission sur celui ci permet de contrôler qui peut se rattacher au tmux.
les autres vont s'y rattacher. tmux -S /tmp/shared_tmux at -t shared
Inconvénients: cela demande un peu de discipline. Tout redimensionnement de terminal est propagé aux autres utilisateurs.
Des astuces existent pour mettre en place des tmux en lecture-seule.
Partage de fenêtre
il est possible de partager une fenêtre:
- contrôle+b % pour séparer verticalement la fenêtre
- contrôle+b " pour séparer horizontallement la fenêtre.
Envoyer les entrées claviers sur plusieurs fenêtres
Après avoir fait contrôle+b a, toutes les frappes claviers sont envoyées à toutes les fenêtres tmux actives.
Imaginez une fenêtre tmux partagée en 3, avec une connexion ssh sur 3 machines différentes, il sera possible d'exécuter les mêmes commandes sur les 3 machines en même temps.