tmux

tmux

Notes › _DIFFUSION › Linux cli scripts

Tmux : le guide du multiplexeur de terminal

Découvrez tmux, le multiplexeur de terminal indispensable pour garder ses sessions, organiser ses fenêtres et ne plus jamais perdre son travail.

Introduction

Si vous passez votre temps à jongler entre plusieurs terminaux, à perdre une commande en cours à cause d’une déconnexion ou à maudire la gestion des fenêtres de votre terminal, tmux est l’outil qu’il vous faut.

tmux (Terminal Multiplexer) permet de créer des sessions, de les diviser en fenêtres et en panneaux, et surtout de les conserver actives même si vous fermez votre terminal. C’est un peu comme avoir un bureau à plusieurs écrans, mais dans un terminal.

Pourquoi utiliser tmux ?

  • Persistance : vos processus continuent de tourner même si vous fermez le terminal.
  • Multitâche : plusieurs fenêtres et panneaux dans une seule session.
  • Productivité : détacher/attacher une session, partager un terminal, automatiser son environnement.
  • Stabilité : plus de crainte de perdre une commande en cours à cause d’une coupure réseau.

Installation

Debian / Ubuntu

1
2
sudo apt update
sudo apt install tmux

Fedora / RHEL

1
sudo dnf install tmux

Vérifier la version

1
tmux -V

La version 3.x est recommandée pour bénéficier de toutes les fonctionnalités modernes.

Concepts de base

tmux repose sur trois niveaux d’organisation :

  • Session : un environnement de travail isolé. Chaque session contient ses propres fenêtres.
  • Fenêtre : équivalent d’un onglet ou d’un bureau virtuel.
  • Panneau : une division de la fenêtre en plusieurs zones, chacune avec son propre shell.

Commandes essentielles

Astuce : appuyer sur Ctrl+b puis ? à tout moment affiche la liste complète des raccourcis tmux et leurs descriptions.

Gérer les sessions

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Créer une session nommée dev -s/--session-name définit le nom.
tmux new -s dev

# Lister les sessions en cours
tmux ls

# Attacher la session dev -t/--target spécifie la cible.
tmux attach -t dev

# Détacher la session en cours
tmux detach

# Supprimer la session dev -t/--target spécifie la cible.
tmux kill-session -t dev
Raccourci Action
Ctrl+b puis s Lister et changer de session interactivement
Ctrl+b puis d Détacher la session en cours
Ctrl+b puis ( Passer à la session précédente
Ctrl+b puis ) Passer à la session suivante
Ctrl+b puis $ Renommer la session courante
Ctrl+b puis L Revenir à la dernière session active

Gérer les fenêtres

Par défaut, le préfixe tmux est Ctrl+b.

Raccourci Action
Ctrl+b puis c Créer une nouvelle fenêtre
Ctrl+b puis n Fenêtre suivante
Ctrl+b puis p Fenêtre précédente
Ctrl+b puis w Lister et choisir une fenêtre
Ctrl+b puis , Renommer la fenêtre courante
Ctrl+b puis & Fermer la fenêtre courante
Ctrl+b puis 0-9 Aller à la fenêtre numéro N

Gérer les panneaux

Raccourci Action
Ctrl+b puis " Diviser horizontalement
Ctrl+b puis % Diviser verticalement
Ctrl+b puis ↑ ↓ ← → Naviguer entre les panneaux
Ctrl+b puis o Cycle entre les panneaux
Ctrl+b puis x Fermer le panneau courant
Ctrl+b puis z Zoomer/dézoomer le panneau courant
Ctrl+b puis espace Changer la disposition des panneaux

Personnaliser tmux avec .tmux.conf

La configuration se fait dans le fichier ~/.tmux.conf. Voici une configuration de base moderne et confortable :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Remplacer le préfixe Ctrl+b par Ctrl+a (plus accessible)
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# Activer la souris pour redimensionner et sélectionner les panneaux
set -g mouse on

# Numéroter les fenêtres et les panneaux à partir de 1
set -g base-index 1
setw -g pane-base-index 1

# Augmenter l'historique du buffer à 10 000 lignes
set -g history-limit 10000

# Réduire le délai d'interprétation de la touche Échap
set -sg escape-time 10

# Activer le support des couleurs 256 et truecolor
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",*:Tc"

# Personnaliser la barre d'état
set -g status-style bg=black,fg=white
set -g status-left-length 40
set -g status-left "[#S] "
set -g status-right " %H:%M %d-%m-%Y"
set -g window-status-current-style bg=blue,fg=white

# Recharger la configuration avec Ctrl+b puis r
bind r source-file ~/.tmux.conf \; display "Config rechargée !"

Après modification :

1
tmux source-file ~/.tmux.conf

Plugins avec Tmux Plugin Manager (TPM)

TPM permet d’installer facilement des plugins tmux.

Installation de TPM

1
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

Ajouter à .tmux.conf

Ajoutez ces lignes en fin de fichier :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Gestionnaire de plugins
set -g @plugin 'tmux-plugins/tpm'

# Plugins essentiels
set -g @plugin 'tmux-plugins/tmux-resurrect'  # sauvegarde et restauration des sessions
set -g @plugin 'tmux-plugins/tmux-continuum'  # sauvegarde automatique
set -g @plugin 'tmux-plugins/tmux-yank'       # copie vers le presse-papiers

# Sauvegarder automatiquement toutes les 15 minutes
set -g @continuum-save-interval '15'
set -g @continuum-restore 'on'

# Initialiser TPM (à placer en fin de fichier)
run '~/.tmux/plugins/tpm/tpm'

Plugins recommandés

  • tmux-resurrect : sauvegarde et restaure les sessions après un redémarrage.
  • tmux-continuum : sauvegarde automatique et restauration continue.
  • tmux-yank : copie dans le presse-papiers du système.

Pour installer les plugins, appuyez sur Ctrl+b puis I (i majuscule).

Cas d’usage concrets

Garder une commande longue en arrière-plan

1
2
3
4
5
6
7
# Créer une session nommée backup
tmux new -s backup

# Lancer la commande longue dans tmux
restic backup --tag prod /srv/data

# Puis détacher avec Ctrl+b puis d

Même en fermant son terminal, le backup continue.

Surveiller un serveur

1
2
3
4
5
6
7
8
# Créer la session
tmux new -s monitoring

# Diviser verticalement (-v) et lancer htop dans le panneau du bas
tmux split-window -v "htop"

# Diviser horizontalement (-h) et afficher le journal système
tmux split-window -h "journalctl -f"

Pair programming

Deux personnes peuvent se connecter au même serveur, attacher la même session tmux et collaborer dans le même terminal.

1
2
3
4
5
# Utilisateur 1 : créer la session
tmux new -s pair

# Utilisateur 2 : attacher la session existante
tmux attach -t pair

Pensez à bien gérer les permissions si deux utilisateurs distincts veulent partager la session.

Tableau récapitulatif des raccourcis

Raccourci Action
Ctrl+b d Détacher la session
Ctrl+b c Nouvelle fenêtre
Ctrl+b n Fenêtre suivante
Ctrl+b p Fenêtre précédente
Ctrl+b w Choisir une fenêtre
Ctrl+b " Panneau horizontal
Ctrl+b % Panneau vertical
Ctrl+b ↑↓←→ Changer de panneau
Ctrl+b x Fermer le panneau
Ctrl+b z Zoomer le panneau
Ctrl+b t Horloge (bonus)

Conclusion

tmux est un allié redoutable pour qui vit dans un terminal. Entre persistance des sessions, organisation en fenêtres et panneaux, et personnalisation poussée, il transforme radicalement l’expérience du shell.