Cédric Temple

Administrateur système en logiciels libres

tmux, points à retenir

2021-02-15 » notes pour plus tard

Ce contenu est fourni sous licence CC BY-NC-SA 4.0

Présentation de tmux

Tmux est un multiplexer de terminaux : il vous permet de créer plusieurs terminaux, de les organiser, de les nommer, de naviguer entre eux, de les afficher les uns à côté des autres, … Il est très utile sur des cas très précis :

  • taper la même commande sur plusieurs ordinateurs en même temps et voir le résultat s’afficher dans la même fenêtre
  • comparer visuellement deux fichiers de configuration à distance en synchronisant le parcours
  • copier un texte dans un fichier de configuration d’un ordinateur distant vers un autre

Sessions, fenêtres, panneaux

Une session est une instance démarrée de tmux. Dans cette session, vous avez plusieurs fenêtres : vous pouvez naviguer de fenêtre en fenêtre. Dans une fenêtre, il y a généralement un panneau mais il peut y en avoir plusieurs également.

Comme cela peut être complexe à comprendre, nous allons prendre un exemple précis pour expliquer les cas d’usages :

  • j’ai plusieurs applications, reposant sur plusieurs services séparés sur plusieurs serveurs : je crée une session différente pour chaque application
  • je nomme ma session comme mon application
  • dans la session de l’application X :
    • j’ai plusieurs fenêtres
    • j’ai créé une fenêtre pour me connecter en SSH sur chaque serveur : dans la fenêtre concernée, je peux lancer des commandes
    • j’ai nommé chaque fenêtre en “commande_nomHost” pour les retrouver facilement
    • j’ai créé aussi une 2e fenêtre pour chaque serveur afin d’afficher les logs de ce serveur :
      • je nomme chaque fenêtre “log_nomHost”
      • dans cette fenêtre j’ai plusieurs panneaux : ma fenêtre peut m’afficher sur un seul écran (en fait, une fenêtre) plusieurs panneaux
      • chaque panneau m’affiche les dernières lignes des logs d’un fichier journal
      • chaque panneau se refraîchit en continue
    • j’ai encore une fenêtre, séparée elle-aussi en plusieurs panneaux :
      • chaque panneau est une connexion SSH sur chaque serveur et affiche un htop en continue
      • j’ai nommé cette unique fenêtre “htop”

Bien entendu, cette organisation n’est qu’un exemple. Vous pouvez faire complètement autrement. Vous pouvez prendre une autre politique de nommage. Cet exemple nous a juste permis d’illustrer les différences entre session tmux, fenêtre tmux et panneau tmux.

Fichier de configuration commenté

Mon fichier de configuration commenté est disponible sur GitHub.

Commandes/suite de touches

Attention, j’ai organisé les combinaisons de touches différemment de la configuration par défaut. Cela me permet d’être plus efficace mais c’est une configuration qui m’appartient (dans le sens “qui me convient personnellement”). Il est possible que vous trouviez d’autres combinaisons de touches sur d’autres sites.

Lancement

tmux
# pour se rattacher à une session tmux existante
tmux attach
# lister les sessions actuelles ; voir celles qui sont attachées de celles qui ne le sont pas
tmux list-sessions

Bases

  • C-a c : création d’une nouvelle fenêtre
  • C-a N où N est un chiffre : se rendre dans la fenêtre N° N
  • C-a n : se rendre dans la fenêtre suivante (next)
  • C-a n : se rendre dans la fenêtre précédente (previous)
  • C-a , : renommer la fenêtre
    • j’oublie souvent ce raccourci , du coup, j’utilise le mode complétion de commande : C-a : rename-windows nom_window
  • C-a \[ : pour naviguer dans la fenêtre ; pour entrer dans le mode sélectionner/copier :
    • utiliser les flèches du clavier pour se déplacer dans la fenêtre
    • C-SPACE : pour sélectionner
    • C-a W : pour copier
    • ESC : pour sortir du mode sélection/copier (si on n’a pas copier)
  • C-a \] : pour coller
  • C-a d : pour se détacher de tmux (sortir, tout en maintenant tmux lancé en arrière plan)
  • C-a $ : pour renommer une session
  • C-a $ : pour lister toutes les sessions

Séparation d’une fenêtre en différents panneaux

  • C-a v : séparer la fenêtre verticalement (on aura donc deux panneaux, un à gauche et un à droite)
  • C-a h : séparer la fenêtre horizontalement (on aura donc deux panneaux, un en haut et un en bas)
  • C-a flèches du clavier : pour se déplacer vers le panneau du haut, du bas, de gauche ou de droite
  • C-a : set-window-option synchronize-panes on : pour synchroniser les entrées : lorsque je tape des commandes, elles sont tapées dans tous les panneaux de ma fenêtre
  • C-a : set-window-option synchronize-panes off : pour désynchroniser les entrées et revenir à l’état normal.

Ce contenu est fourni sous licence CC BY-NC-SA 4.0