Tmux est un multiplexeur de terminaux, cela permet de créer des sessions dans lesquels vous pouvez créer un ou plusieurs terminal virtuel.
L’interet de tmux est le fait qu’une session peut être détaché mais quelle continue à exister et à fonctionner en arrière plan et que l’on puisse s’y rattacher plus tard.
l'intérêt c'est de pouvoir faire tourner mon client irc sur un serveur qui n'est pas chez moi (sur lequel je me connecte en ssh). weechat tourne dans un tmux, dont je peux me détacher quand je me déconnecte, ainsi, mon client irc reste connecter même quand j'éteins ma machine perso
Une autre fonction pratique est le fait que plusieurs utilisateurs puissent se connecter simultanément à une même session et pouvoir voir et effectuer des actions sur les mêmes terminaux.
Par exemple le serveur linux est souvent commandé par UN SEUL terminal, pas d'interface graphique.
Grâce à tmux, on peut diviser ce terminal en plusieurs fenêtres,
Beaucoup connaissent “screen”, eh bien tmux est similaire, on peut donc diviser autant que l'on veut le terminal.
Tmux est très proche de gnu-screen, mais présente deux avantages par rapport à son aîné: son architecture client-serveur lui permet plus de flexibilité dans la gestion des sessions et sa configuration est beaucoup plus simple.
Avec Tmux vous pourrez donc facilement créer plusieurs espaces de travail pour vos différents projets, composés de plusieurs terminaux. Vous pourrez exécuter une commande longue sur un serveur distant, vous déconnecter du serveur et vous reconnecter à la session pour récupérer l'application en cours d’exécution ou encore partager une session Tmux, à laquelle un autre utilisateur va se connecter pour faire du pair-programming.
eeeuh, premièrement, on l'installe avec :
apt-get update && apt-get install tmux
après installation, on le lance 2) avec :
tmux
Pour quitter le terminal tmux faire
exit
comme dans un terminal classique.
La gestion des sessions est quelque chose de très très pratique. En effet, il est toujours bien pratique de pouvoir quitter une session SSH et de laisser tourner des tâches qui prennent du temps ou encore être à l’abri d'une déconnexion réseaux. C'est pourquoi lorsque vous êtes dans tmux, il est possible de se détacher de son tmux :
Pour Se détacher de la session tmux avec le clavier (après avoir lancé tmux bien sûr) Ctrl+B+D (attention ça ne ferme pas le terminal tmux, il faut taper exit pour quitter)
Pour se connecter à la session qui vient d'être détachée :
tmux a
eeuh, là, le nom du session est seulement 0 ou 1,….. de plus, on ne peut se connecter qu'à la session qu'on vient de quitter !
Voici par exemple une connection SSH à une session tmux et weechat lancé dans tmux: https://i.imgur.com/VRvh6vK.png
Pour fermer une session, c'est la commande clavier suivante Ctrl+B
Puis valider :
:kill-session
CTRL+b “
Split vertical du terminal courant en deux + ouverture d'un terminal dans le nouveau panel
CTRL+b %
Split horizontal du terminal courant en deux + ouverture d'un terminal dans le nouveau panel
CTRL+b o
Aller au panel suivant
CTRL+b
Aller au panel précédent
CTRL+b {flèches directionnelles}
Aller au prochain panel qui se trouve dans la direction de la flèche
CTRL+b ;
Basculer dans le dernier panel actif
CTRL+b !
Créer un nouveau terminal à partir du panel courant
CTRL+b x
Fermer le panel courant
CTRL+b c
Créer un nouveau terminal
CTRL+b n
Aller au terminal suivant
CTRL+b p
Aller au terminal précédent
CTRL+b w
Afficher la liste des terminaux disponibles
CTRL+b d
Détacher tmux
CTRL+b :
Ouvrir l'invite de commande
CTRL+b (
Aller à la session précédente
CTRL+b )
Aller à la session suivante
Pour pouvoir entrer une commande tmux, on tape d'abord le bind-key4).
Mais il est possible de le modifier :
Supposons qu'on veut le modifier par: Ctrl+A
Ouvrir le fichier : ~/.tmux.conf avec votre éditeur5) préféré :
nano ~/.tmux.conf
Et insérer les lignes suivantes:
unbind C-b set -g prefix C-a
On peut faire en sorte qu'une session se nomme par exemple :
super_session
Et préciser qu'on veut se connecter à “super_session”.
D'abord faire en sorte que la session se nomme super_session.
Cela se fait par
Ctrl+B+$
Et là, tout en bas, on peut voir qu'on peut éditer, et c'est là qu'on écrit le nouveau nom du session, ainsi, on a une session qui se nomme super_session.
On peut donc avoir la sortie suivante, pour la commande
tmux ls
1: 1 windows (created Thu Mar 7 22:09:07 2013) [168x43]\\ super_session: 1 windows (created Thu Mar 7 21:20:09 2013) [168x43]
Pour se connecter à la super_session: hop :
tmux a -t super_session
Et pour la session qui se nomme 1, je vous laisse deviner
Sans sortir de tmux, il est possible de basculer d'une session dans une autre avec la commande
Ctrl+B+(
Ctrl+B+)
Supposons que dans une session vous avez une 10windows dont chaque window possède 50panes.
Pour quitter les 10 fenêtres qui sont ouvertes, soit vous faites pour chacune Ctrl+B+&
Soit vous tapez la commande suivante Ctrl+B
kill-session
Une session peut contenir plusieurs fenêtres. Pour créer une fenêtre la commande est Ctrl+B+C
Là, on ne voit pas où est passée la fenêtre précédente ?
Eh bien, regardez tout en bas, sur la ligne verte il y a des informations concernant les windows qui sont créés.
Et pour fermer6) le window où vous vous trouvez, on peut utiliser Ctrl+B+&
Comme dit précédemment, mais bon…
Enfin, la partie que j'utilise le plus souvent .
perso, j'utilise tmux pour les split de windows, ainsi on peut avoir plusieurs terminaux ouverts en même temps.
Supposons une windows où nous nous trouvons
Splittons7) cette windows verticalement Ctrl+B+”
Pour splitter cette windows horizontalement Ctrl+B+%
pour passer d’un split à un autre split Ctrl+B+O (il s'agit d'un O minuscule comme ordinateur)
Pour pouvoir fermer une division8), on fait Ctrl+B+X
Comment savoir les sessions qui sont ouvertes ?
Avant on le pouvait, mais il faut sortir de tmux puis taper la commande:
tmux ls
Maintenant, il est possible de voir les sessions qui sont ouvertes par tmux ainsi Ctrl+B+S
Il est aussi possible de voir les numéros de panes. On ne connaît pas pour le moment ce que cela veut dire mais voici la commande clavier Ctrl+B+Q
Si une window possède plusieurs panes, il est possible de modifier ses dimensions ainsi Ctrl+B Ctrl+↑ | Ctrl+↓ | Ctrl+← | Ctrl+→
ou par les commandes suivantes:
Ctrl-b :resize-pane -U 20
Pour le redimensionner en haut de 20cellules9).
L'option -U peut aussi être modifiée en :