======tmux======
* Objet : Commande Linux tmux
* Niveau requis :{{tag>débutant avisé}}
* Commentaires : //Alors on veut manipuler tmux, voici une petite intro//
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-)
* Suivi : {{tag>à-tester}}
* Création par [[user>justmmt]] le 05/03/2013
* Testé par .... le ....
* Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=6605 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
=====Description=====
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.
=====Installation=====
//eeeuh, premièrement, on l'installe avec// :
apt-get update && apt-get install tmux
après installation, on le lance (([[:doc:systeme:terminal]])) avec :
tmux
Pour quitter le terminal tmux faire exit
comme dans un terminal classique.
===== Remarque =====
- Un terminal peut avoir plusieurs sessions de tmux
- Une session de tmux peut avoir plusieurs fenêtres((windows)), et
- Un windows peut avoir plusieurs "panes".
===== Les sessions =====
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 :
:-)
==== Se détacher de la session tmux (lancer 'tmux a' pour s'y rattacher) ====
Pour Se détacher de la session tmux avec le clavier (après avoir lancé tmux bien sûr)
C-b-d (attention ça ne ferme pas le terminal tmux, il faut taper exit pour quitter)
==== Se connecter ====
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]]
==== Fermer la session ====
Pour fermer une session, c'est la commande clavier suivante
C-b
Puis valider :
:kill-session
==== La combinaison par défaut pour appeler les raccourcis avec CTRL+b: ====
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
=====Astuce:=====
Pour pouvoir entrer une commande tmux, on tape d'abord le ////bind-key((C-b)).
Mais il est possible de le modifier :
Supposons qu'on veut le modifier par: C-a \\
Ouvrir le fichier : **~/.tmux.conf** avec votre éditeur(([[:doc:editeurs:nano]])) préféré :
nano ~/.tmux.conf
Et insérer les lignes suivantes:
unbind C-b
set -g prefix C-a
===== Sessions multiples =====
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
C-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
C-b-(
C-b-)
===== Astuce =====
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
C-b-&
Soit vous tapez la commande suivante
C-b
kill-session
===== Fenêtres multiples =====
Une session peut contenir plusieurs fenêtres.
Pour créer une fenêtre la commande est
C-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 fermer((on peut dire aussi tuer)) le window où vous vous trouvez, on peut utiliser
C-b-&
//Comme dit précédemment, mais bon...//
===== Multiple-"pane" =====
Enfin, la partie que j'utilise le plus souvent :-X.
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 \\
Splittons((divisons)) cette windows verticalement
C-b-"
Pour splitter cette windows horizontalement
C-b-%
pour passer d’un split à un autre split
C-b-o (il s'agit d'un O minuscule comme ordinateur)
Pour pouvoir fermer une division((on le dit "pane")), on fait
C-b-x
===== Des p'tits trucs =====
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
C-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
C-b-q
===== Redimensionnement des "panes" =====
Si une window possède plusieurs //panes//, il est possible de modifier ses dimensions ainsi
C-b C-Up | C-Down | C-Left | C-Right
ou par les commandes suivantes:
Ctrl-b :resize-pane -U 20
Pour le redimensionner en haut de 20cellules((//20cells//)).
L'option -U peut aussi être modifiée en :
- -D pour le redimensionnement en bas,
- -R pour le redimensionnement a droite,
- -L pour le redimensionnement à gauche.
===== Divers liens =====
https://gist.github.com/henrik/1967800