TL;DR — Résumé Rapide
Maîtrisez la gestion des sessions tmux pour serveurs distants. Sessions persistantes, volets, configuration, plugins et workflows DevOps pratiques expliqués.
Si vous avez déjà perdu des heures de travail parce qu’une connexion SSH s’est coupée au milieu d’un déploiement, ou si vous vous êtes retrouvé à jongler avec une douzaine de fenêtres de terminal pour surveiller un serveur distant, tmux est l’outil qui résout les deux problèmes définitivement. Tmux (multiplexeur de terminal) exécute un processus serveur persistant sur l’hôte distant — vos sessions, volets et commandes en cours d’exécution survivent aux déconnexions, aux redémarrages de votre machine locale et aux pannes réseau. Ce guide couvre tout ce dont vous avez besoin : installation, la hiérarchie session-fenêtre-volet, chaque raccourci essentiel, un ~/.tmux.conf prêt pour la production, l’écosystème de plugins, les scripts d’environnements automatisés et trois workflows pratiques DevOps.
Prérequis
Avant de commencer, vous avez besoin de :
- Un système Linux ou macOS avec accès au terminal (local ou via SSH)
- Privilèges
sudopour l’installation - Familiarité de base avec la ligne de commande
- Un client SSH si vous travaillez avec des serveurs distants
Pourquoi tmux ? Les Cas d’Usage Principaux
Trois scénarios rendent tmux indispensable pour le travail sur des serveurs distants :
Survivre aux déconnexions SSH. Quand votre FAI est défaillant ou que vous fermez le couvercle de votre portable, tout processus exécuté dans un terminal SSH simple meurt. Avec tmux, la session continue sur le serveur. Votre rsync, ansible-playbook ou npm run build de longue durée continue de tourner. Vous vous reconnectez et vous rattachez.
Workflows multi-volets. Un déploiement typique peut impliquer la surveillance des logs dans un volet, l’exécution de scripts de migration dans un autre, et un shell prêt pour les commandes de rollback dans un troisième — le tout en une seule connexion SSH.
Programmation en binôme. Deux ingénieurs peuvent se connecter en SSH au même serveur et s’attacher à la même session tmux. Ils voient et interagissent tous les deux avec le même terminal en temps réel.
Installation
Tmux est disponible dans les dépôts par défaut de toutes les distributions principales.
Ubuntu/Debian :
sudo apt update && sudo apt install -y tmux
Fedora/RHEL/CentOS :
sudo dnf install -y tmux
Arch Linux :
sudo pacman -S tmux
macOS (Homebrew) :
brew install tmux
Vérifier :
tmux -V
# tmux 3.4
Toute version 3.0 ou ultérieure prend en charge toutes les fonctionnalités de ce guide.
Concepts Principaux : Sessions, Fenêtres et Volets
La hiérarchie tmux comporte trois niveaux :
Session — Le conteneur le plus externe. Un espace de travail indépendant et nommé. Vous pouvez avoir de nombreuses sessions en cours : travail, deploiement, monitor. Les sessions persistent même quand vous n’êtes pas attaché.
Fenêtre — Vit dans une session. Occupe tout l’écran, comme un onglet de navigateur. Chaque session peut avoir plusieurs fenêtres. La barre de statut en bas affiche toutes les fenêtres.
Volet — Une subdivision d’une fenêtre. Vous divisez une fenêtre horizontalement ou verticalement pour créer plusieurs volets, chacun exécutant son propre shell ou commande.
serveur tmux (persistant sur l'hôte distant)
|
+-- Session: "travail"
| +-- Fenêtre 0: "editeur"
| | +-- Volet 0: vim src/app.py
| | +-- Volet 1: python -m pytest
| +-- Fenêtre 1: "logs"
| +-- Volet 0: tail -f /var/log/app.log
|
+-- Session: "deploiement"
+-- Fenêtre 0: "principal"
+-- Volet 0: ansible-playbook deploy.yml
La touche préfixe signale à tmux que la prochaine frappe est une commande. Le préfixe par défaut est Ctrl+b.
Raccourcis Essentiels
Référence complète pour l’utilisation quotidienne de tmux (préfixe par défaut Ctrl+b) :
| Action | Raccourci |
|---|---|
| Sessions | |
| Se détacher de la session | Ctrl+b d |
| Lister et changer de session | Ctrl+b s |
| Renommer la session actuelle | Ctrl+b $ |
| Session précédente | Ctrl+b ( |
| Session suivante | Ctrl+b ) |
| Fenêtres | |
| Créer une nouvelle fenêtre | Ctrl+b c |
| Renommer la fenêtre actuelle | Ctrl+b , |
| Fenêtre suivante | Ctrl+b n |
| Fenêtre précédente | Ctrl+b p |
| Aller à la fenêtre par numéro | Ctrl+b 0-9 |
| Lister et sélectionner les fenêtres | Ctrl+b w |
| Fermer la fenêtre actuelle | Ctrl+b & |
| Volets | |
| Division verticale | Ctrl+b % |
| Division horizontale | Ctrl+b " |
| Naviguer entre les volets | Ctrl+b ←↑↓→ |
| Faire défiler les volets | Ctrl+b o |
| Afficher les numéros de volets | Ctrl+b q |
| Zoom du volet (plein écran) | Ctrl+b z |
| Échanger avec le volet précédent | Ctrl+b { |
| Échanger avec le volet suivant | Ctrl+b } |
| Convertir le volet en fenêtre | Ctrl+b ! |
| Fermer le volet actuel | Ctrl+b x |
| Faire défiler les dispositions | Ctrl+b Space |
| Mode Copie | |
| Entrer en mode copie | Ctrl+b [ |
| Coller le buffer | Ctrl+b ] |
| Quitter le mode copie | q |
| Autres | |
| Invite de commande | Ctrl+b : |
| Lister tous les raccourcis | Ctrl+b ? |
| Recharger la config | Ctrl+b r |
Gestion des Sessions
Créer des Sessions
# Nouvelle session sans nom
tmux
# Nouvelle session nommée (toujours préférer ceci)
tmux new -s travail
# Session exécutant une commande spécifique
tmux new -s logs "tail -f /var/log/syslog"
# Session dans un répertoire spécifique
tmux new -s api -c /var/www/api
Lister et Changer de Session
tmux ls
# Exemple de sortie :
# deploiement: 2 fenêtres (créée dim 22 mar 09:15:22 2026)
# monitor: 1 fenêtres (créée dim 22 mar 08:30:15 2026) (attachée)
# travail: 3 fenêtres (créée dim 22 mar 07:45:00 2026)
S’attacher et se Détacher
# Se détacher (session continue) : Ctrl+b d
# S'attacher à la session la plus récente
tmux attach
# S'attacher à une session spécifique
tmux attach -t travail
# S'attacher et détacher les autres clients
tmux attach -t travail -d
Renommer et Supprimer des Sessions
tmux rename-session -t ancien-nom nouveau-nom
tmux kill-session -t deploiement
tmux kill-session -a
tmux kill-server
Gestion des Fenêtres
# Créer une nouvelle fenêtre : Ctrl+b c
# Renommer la fenêtre actuelle : Ctrl+b ,
# Aller à la fenêtre 0 : Ctrl+b 0
# Suivante/précédente : Ctrl+b n / Ctrl+b p
# Lister les fenêtres : Ctrl+b w
# Fermer la fenêtre : Ctrl+b &
Gestion des Volets
Diviser
# Division verticale (volets côte à côte) : Ctrl+b %
# Division horizontale (volets empilés) : Ctrl+b "
Redimensionner les Volets
# Redimensionnement fin : Ctrl+b puis Ctrl + flèche
# Depuis l'invite de commande (Ctrl+b :) :
resize-pane -D 10 # Bas 10 lignes
resize-pane -U 10 # Haut 10 lignes
resize-pane -L 20 # Gauche 20 colonnes
resize-pane -R 20 # Droite 20 colonnes
Dispositions de Volets
Tmux possède cinq dispositions intégrées que vous pouvez faire défiler avec Ctrl+b Space :
even-horizontal— volets côte à côte, largeur égaleeven-vertical— volets empilés, hauteur égalemain-horizontal— un grand volet en haut, des volets plus petits en dessousmain-vertical— un grand volet à gauche, des volets plus petits à droitetiled— volets en grille
Séparer et Joindre des Volets
# Convertir un volet en sa propre fenêtre : Ctrl+b !
# Joindre un volet d'une autre fenêtre (via Ctrl+b :)
join-pane -s 2.0 # Déplacer le volet 0 de la fenêtre 2 dans la fenêtre actuelle
join-pane -t 3 # Déplacer le volet actuel dans la fenêtre 3
Mode Copie
Le mode copie donne accès complet au buffer de défilement avec recherche et sélection de texte.
Entrer en Mode Copie et Naviguer
# Entrer en mode copie
Ctrl+b [
# Navigation
Touches fléchées # Déplacer le curseur
PgUp / PgDn # Défiler par page
g # Aller au début du buffer
G # Aller à la fin du buffer
/terme # Rechercher en avant
?terme # Rechercher en arrière
n / N # Correspondance suivante / précédente
q # Quitter
Mode Vi (Recommandé)
Ajoutez à ~/.tmux.conf :
setw -g mode-keys vi
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel
En mode copie :
v # Commencer la sélection
y # Copier la sélection
Ctrl+b ] # Coller
Configuration Personnalisée ~/.tmux.conf
Configuration Initiale Complète
# ~/.tmux.conf
# Préfixe
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# Souris
set -g mouse on
# Couleurs
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",xterm-256color:Tc"
# Buffer de défilement
set -g history-limit 50000
# Mode vi
setw -g mode-keys vi
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel
# Indexation
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
# Pas de délai d'échappement
set -sg escape-time 0
# Divisions de volets
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# Recharger
bind r source-file ~/.tmux.conf \; display-message "Config rechargée"
# Barre de statut
set -g status-position bottom
set -g status-style "bg=#1a1b26,fg=#a9b1d6"
set -g status-left "#[fg=#06b6d4,bold] #S "
set -g status-left-length 30
set -g status-right "#[fg=#a9b1d6] %Y-%m-%d %H:%M "
setw -g window-status-format " #I:#W "
setw -g window-status-current-format "#[fg=#06b6d4,bold] #I:#W* "
Tmux Plugin Manager (tpm) et Plugins Essentiels
Installer tpm
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Ajoutez à la fin de ~/.tmux.conf :
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
run '~/.tmux/plugins/tpm/tpm'
Appuyez sur Ctrl+a I pour installer les plugins.
tmux-resurrect
Sauvegarde et restaure les sessions tmux après les redémarrages du serveur.
# Sauvegarder la session : Ctrl+a Ctrl+s
# Restaurer la session : Ctrl+a Ctrl+r
tmux-continuum
set -g @continuum-restore 'on'
set -g @continuum-save-interval '15'
Scripts tmux
Environnement de Développement à 4 Volets
#!/usr/bin/env bash
# env-dev.sh
SESSION="dev"
tmux has-session -t "$SESSION" 2>/dev/null && tmux attach -t "$SESSION" && exit
tmux new-session -d -s "$SESSION" -n "editeur" -c ~/projets/api
tmux split-window -h -t "$SESSION:editeur" -c ~/projets/api
tmux split-window -v -t "$SESSION:editeur.0" -c ~/projets/api
tmux split-window -v -t "$SESSION:editeur.1" -c ~/projets/api
tmux select-layout -t "$SESSION:editeur" tiled
tmux send-keys -t "$SESSION:editeur.0" "vim ." Enter
tmux send-keys -t "$SESSION:editeur.1" "npm run dev" Enter
tmux send-keys -t "$SESSION:editeur.2" "npm run test -- --watch" Enter
tmux send-keys -t "$SESSION:editeur.3" "git log --oneline -10" Enter
tmux new-window -t "$SESSION" -n "logs" -c ~/projets/api
tmux send-keys -t "$SESSION:logs" "tail -f logs/app.log" Enter
tmux select-window -t "$SESSION:editeur"
tmux select-pane -t "$SESSION:editeur.0"
tmux attach -t "$SESSION"
tmux vs Screen vs Zellij vs Byobu
| Fonctionnalité | tmux | GNU Screen | Zellij | Byobu |
|---|---|---|---|---|
| Divisions verticales | Intégrées | Nécessite un patch | Intégrées | Via tmux/screen |
| Syntaxe de configuration | Propre | Complexe | YAML/KDL | tmux simplifié |
| Écosystème de plugins | Mature (tpm) | Minimal | Croissant | Hérite de tmux |
| Support des scripts | Excellent | Limité | Modéré | Limité |
| Support de la souris | Excellent | Limité | Excellent | Excellent |
| Persistance après redémarrage | Avec tmux-resurrect | Non | Non | Avec tmux-resurrect |
| Développement actif | Oui | Minimal | Oui (Rust) | Minimal |
| Meilleur pour | Utilisateurs avancés, DevOps | Systèmes hérités | Nouveaux utilisateurs | Démarrage rapide |
Workflows Pratiques
Déploiement de Longue Durée
ssh deploy@prod-01.exemple.com
tmux new -s migration
./scripts/lancer-migrations.sh
# Se détacher : Ctrl+a d
exit
# Des heures plus tard
ssh deploy@prod-01.exemple.com
tmux attach -t migration
Tableau de Bord de Surveillance
+---------------------------+---------------------------+
| | |
| Volet 0: htop | Volet 1: df -h (watch) |
| | |
+---------------------------+---------------------------+
| | |
| Volet 2: tail syslog | Volet 3: netstat |
| | |
+---------------------------+---------------------------+
Résumé
Tmux résout les deux problèmes fondamentaux du travail sur des serveurs distants : la persistance des sessions et l’organisation du terminal. Points clés :
- Les sessions survivent aux coupures SSH — détachez-vous avec
Ctrl+a d, reconnectez et utiliseztmux attach -t nom - Hiérarchie à trois niveaux — les sessions contiennent des fenêtres, les fenêtres contiennent des volets
- Touche préfixe —
Ctrl+bpar défaut,Ctrl+arecommandé dans~/.tmux.conf - Zoom (
Ctrl+b z) — maximise temporairement un volet sans perdre la disposition - Mode copie (
Ctrl+b [) — défilement, recherche et copie sans quitter tmux - Plugins tpm — tmux-resurrect sauvegarde les sessions après redémarrage, tmux-continuum sauvegarde automatiquement
- Automatisez tout — utilisez
tmux new-session,split-window,send-keysetselect-layout
Articles Connexes
- Tmux : Le Multiplexeur de Terminal dont Tout Sysadmin a Besoin
- Durcissement SSH : Sécurisez votre Serveur Linux en 12 Étapes
- Gestion des Processus Linux : ps, top, kill et systemd
- Bash Scripting pour DevOps : Automatisation et Scripts de Déploiement
- Vim pour DevOps : Commandes Essentielles et Configuration