Aller au contenu
Outils medium

tmux : Multiplexeur de terminal pour DevOps

22 min de lecture

Ce guide vous apprend à utiliser tmux pour ne plus jamais perdre votre travail en cas de déconnexion SSH. Vous saurez créer des sessions persistantes, organiser votre terminal en panneaux et onglets, et personnaliser tmux selon vos besoins. Prérequis : accès à un terminal Linux, macOS ou WSL.

Imaginez cette situation : vous êtes connecté en SSH à un serveur de production. Vous lancez une migration de base de données qui prend 2 heures. Au bout d’une heure, votre connexion Wi-Fi coupe pendant 30 secondes.

Ce qui se passe sans tmux :

  1. Votre connexion SSH est interrompue
  2. Le terminal distant reçoit un signal “raccrocher” (SIGHUP)
  3. Tous les processus lancés depuis ce terminal sont tués
  4. Votre migration s’arrête à mi-chemin
  5. Vous avez une base de données dans un état incohérent

C’est un vrai problème qui arrive régulièrement aux DevOps, sysadmins, et développeurs qui travaillent sur des serveurs distants.

Pour comprendre tmux, faisons une analogie avec un bureau physique.

Sans tmux : vous travaillez sur un bureau qui disparaît dès que vous quittez la pièce. Tous vos documents, outils et travail en cours disparaissent avec.

Avec tmux : vous travaillez dans un bureau qui reste intact même quand vous partez. Quand vous revenez, tout est exactement comme vous l’avez laissé : les documents ouverts, les programmes en cours d’exécution, l’organisation de votre espace.

SituationSans tmuxAvec tmux
Déconnexion accidentelleTout est perduOn reprend où on en était
Tâche longue (compilation, backup)Doit garder le terminal ouvertLance et reviens plus tard
Travailler sur plusieurs chosesPlusieurs terminaux à gérerUn seul terminal, plusieurs espaces
Montrer son écran à un collèguePartage d’écran Zoom/TeamsSession partagée en temps réel
Revenir le lendemainTout refaire depuis zéroSession sauvegardée

Le nom “tmux” vient de Terminal MUltipleXer. Décomposons ce terme :

  • Terminal : l’interface texte où vous tapez des commandes
  • Multiplexer : combiner plusieurs signaux en un seul (terme d’électronique)

Un multiplexeur de terminal permet donc de combiner plusieurs terminaux virtuels dans une seule fenêtre de terminal physique.

Imaginez que vous ayez un seul écran d’ordinateur, mais que vous puissiez y afficher 4 bureaux différents, tous actifs en même temps, et passer de l’un à l’autre instantanément. C’est exactement ce que fait tmux avec les terminaux.

Avant de pratiquer, comprenons les trois niveaux d’organisation de tmux. C’est essentiel pour ne pas se perdre.

Une session est un espace de travail complet et indépendant. Pensez-y comme à un projet ou un contexte de travail.

Exemple concret : vous pouvez avoir :

  • Une session “api-backend” pour le développement de l’API
  • Une session “monitoring” pour surveiller les serveurs
  • Une session “database” pour les opérations de BDD

Chaque session est isolée des autres et persiste même quand vous êtes déconnecté.

Une window (fenêtre) est un onglet à l’intérieur d’une session. Comme les onglets dans votre navigateur web.

Exemple concret : dans votre session “api-backend”, vous pouvez avoir :

  • Window 1 : “editeur” - où vous codez
  • Window 2 : “serveur” - où tourne votre serveur de dev
  • Window 3 : “tests” - où vous lancez les tests
  • Window 4 : “git” - pour vos commits

Vous ne voyez qu’une seule window à la fois (comme un onglet), mais vous passez de l’une à l’autre instantanément.

Un pane (panneau) est une division d’une window. Vous pouvez couper votre écran en 2, 4, 6… parties, chacune avec son propre terminal.

Exemple concret : dans votre window “debug”, vous pouvez avoir :

  • Pane gauche : les logs du serveur
  • Pane droite : vos commandes de test

Ainsi, vous voyez les logs en temps réel pendant que vous testez.

Architecture tmux : le serveur contient plusieurs sessions, chaque session contient des windows (onglets), chaque window peut être divisée en panes

Version actuelle : 3.4 (2024)

tmux est disponible dans les dépôts de toutes les distributions Linux. L’installation prend quelques secondes.

Fenêtre de terminal
sudo apt update && sudo apt install -y tmux

Vérification :

Fenêtre de terminal
tmux -V

Vous devez voir tmux 3.4 (ou une version proche).

Apprenons par la pratique. Nous allons créer une session, lancer une commande, nous détacher, et nous rattacher.

Avant de commencer, une notion essentielle : le préfixe.

Quand vous êtes dans tmux, comment distinguer une commande pour tmux d’une commande normale ? Par exemple, si vous appuyez sur “d”, tmux doit comprendre :

  • Est-ce que vous voulez taper la lettre “d” dans votre terminal ?
  • Ou est-ce que vous voulez vous détacher de tmux ?

La solution : le préfixe. Par défaut, c’est Ctrl+B.

Comment ça marche :

  1. Vous appuyez sur Ctrl et B en même temps
  2. Vous relâchez
  3. Vous appuyez sur la touche de commande (par exemple d pour détacher)
  1. Ouvrez un terminal

    Sur votre machine locale ou en SSH vers un serveur.

  2. Créez une session nommée

    Fenêtre de terminal
    tmux new -s apprentissage

    Que se passe-t-il :

    • tmux démarre un serveur en arrière-plan (s’il n’existe pas déjà)
    • Il crée une session nommée “apprentissage”
    • Il vous connecte automatiquement à cette session

    Comment savoir que vous êtes dans tmux ?

    Regardez en bas de votre terminal : une barre verte (par défaut) est apparue. Elle affiche le nom de la session et la liste des windows.

  3. Lancez une commande (simulation d’une tâche longue)

    Fenêtre de terminal
    # Cette commande affiche un compteur toutes les secondes
    for i in $(seq 1 1000); do echo "Compteur: $i"; sleep 1; done

    Vous voyez le compteur s’incrémenter. Laissez-le tourner.

  4. Détachez-vous de la session

    Appuyez sur : Ctrl+B (relâchez), puis d

    Que se passe-t-il :

    • Vous revenez à votre terminal normal (sans la barre verte)
    • Le message [detached (from session apprentissage)] s’affiche
    • Mais le compteur continue de tourner en arrière-plan !
  5. Vérifiez que la session existe encore

    Fenêtre de terminal
    tmux ls

    Résultat attendu :

    apprentissage: 1 windows (created Thu Feb 6 10:30:00 2026)

    La session existe toujours, avec 1 window.

  6. Rattachez-vous à la session

    Fenêtre de terminal
    tmux attach -t apprentissage

    Que se passe-t-il :

    • Vous retournez dans tmux
    • Le compteur a continué pendant votre absence !
    • Si vous étiez à “Compteur: 10” quand vous êtes parti et que 30 secondes ont passé, vous êtes maintenant à “Compteur: 40”
  7. Arrêtez le compteur et quittez

    • Ctrl+C pour arrêter le compteur
    • exit pour fermer la window (et donc la session, puisqu’il n’y en a qu’une)

Ces commandes se tapent dans un terminal normal, avant d’entrer dans tmux :

CommandeCe qu’elle faitQuand l’utiliser
tmux new -s NOMCrée une session nommée NOMDémarrer un nouveau travail
tmux lsListe les sessions existantesVoir ce qui tourne
tmux attach -t NOMSe connecte à la session NOMReprendre un travail
tmux attachSe connecte à la dernière sessionRaccourci si une seule session
tmux kill-session -t NOMSupprime la session NOMNettoyer (attention, tue les processus !)

Ces raccourcis s’utilisent depuis l’intérieur de tmux. Rappel : C-b signifie Ctrl+B (le préfixe).

RaccourciCe qu’il faitMnémotechnique
C-b dDétache de la sessiondetach
C-b $Renomme la session$ = nom de variable, donc nom
C-b sListe les sessions (pour naviguer)sessions
RaccourciCe qu’il faitMnémotechnique
C-b cCrée une nouvelle windowcreate
C-b nPasse à la window suivantenext
C-b pPasse à la window précédenteprevious
C-b ,Renomme la window actuellevirgule = pause pour réfléchir au nom
C-b wListe les windows (pour naviguer)windows
RaccourciCe qu’il faitMnémotechnique
C-b "Divise horizontalement (haut/bas)” ressemble à deux traits horizontaux
C-b %Divise verticalement (gauche/droite)% ressemble à une division
C-b flèchesNavigue entre les panesintuitif
C-b xFerme le pane actuelx = croix = fermer
C-b zZoom/dézoom le pane (plein écran)zoom

Voyons tmux en action dans une situation réelle de DevOps.

Vous devez :

  1. Mettre à jour un serveur (ça peut prendre 20-30 minutes)
  2. Surveiller les logs pendant la mise à jour
  3. Être prêt à intervenir si problème

Sans tmux, vous garderiez 3 fenêtres de terminal ouvertes. Si votre connexion coupe, tout est perdu.

  1. Connexion au serveur et création de session

    Fenêtre de terminal
    ssh admin@serveur-prod
    tmux new -s maintenance

    Vous êtes dans tmux. Donnez à votre window un nom explicite :

    C-b , puis tapez update et Entrée.

  2. Créer un layout à 2 panneaux

    Nous voulons voir la mise à jour en haut et les logs en bas.

    Divisez horizontalement : C-b "

    Votre écran est maintenant coupé en deux.

  3. Dans le panneau du haut : préparer la mise à jour

    Vous devriez être dans le panneau du haut. Sinon : C-b flèche haut

    Fenêtre de terminal
    # Vérifier d'abord ce qui va être mis à jour
    sudo apt update
    apt list --upgradable
  4. Dans le panneau du bas : suivre les logs

    Passez au panneau du bas : C-b flèche bas

    Fenêtre de terminal
    # Suivre les logs système en temps réel
    sudo journalctl -f -u apt-daily* -u unattended-upgrades
  5. Retour en haut pour lancer la mise à jour

    C-b flèche haut

    Fenêtre de terminal
    sudo apt upgrade -y

    La mise à jour commence. Dans le panneau du bas, vous voyez les logs en temps réel.

  6. Vous pouvez partir tranquillement

    C-b d pour détacher.

    Vous pouvez fermer votre terminal, aller déjeuner, éteindre votre PC. La mise à jour continue.

  7. Revenir vérifier plus tard

    Fenêtre de terminal
    ssh admin@serveur-prod
    tmux attach -t maintenance

    Tout est là : la mise à jour est terminée (ou en cours), les logs ont tout enregistré.

tmux est configurable via un fichier ~/.tmux.conf. Ce fichier n’existe pas par défaut ; vous devez le créer.

Quelques irritants du comportement par défaut :

  • Le préfixe C-b demande de tordre les doigts (C-a est plus naturel)
  • La souris ne fonctionne pas (pas de clic pour changer de pane)
  • Les numéros de windows commencent à 0 (peu intuitif)
  • L’historique de scroll est limité

Créez le fichier ~/.tmux.conf avec ce contenu :

Fenêtre de terminal
# ============================================
# Configuration tmux pour débutants
# ============================================
# -------------------------------------------
# PRÉFIXE : Changer C-b pour C-a (plus accessible)
# -------------------------------------------
# C-a est plus facile à taper que C-b
# C-a C-a envoie C-a au programme (utile pour Bash)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# -------------------------------------------
# SOURIS : Activer le support souris
# -------------------------------------------
# Permet de :
# - Cliquer pour changer de pane
# - Scroller pour voir l'historique
# - Redimensionner les panes en glissant les bordures
set -g mouse on
# -------------------------------------------
# NUMÉROTATION : Commencer à 1 (pas 0)
# -------------------------------------------
# Plus logique : window 1, 2, 3... pane 1, 2, 3...
set -g base-index 1
setw -g pane-base-index 1
# -------------------------------------------
# HISTORIQUE : Plus de lignes de scroll
# -------------------------------------------
# Par défaut : 2000. On augmente à 50000.
set -g history-limit 50000
# -------------------------------------------
# COULEURS : Support 256 couleurs
# -------------------------------------------
set -g default-terminal "screen-256color"
# -------------------------------------------
# RACCOURCIS : Division plus intuitive
# -------------------------------------------
# | pour diviser verticalement (comme un mur vertical)
# - pour diviser horizontalement (comme un trait horizontal)
# -c "#{pane_current_path}" garde le répertoire courant
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# -------------------------------------------
# NAVIGATION : Alt+flèches sans préfixe
# -------------------------------------------
# Plus rapide que C-a flèches
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# -------------------------------------------
# RECHARGEMENT : C-a r recharge la config
# -------------------------------------------
bind r source-file ~/.tmux.conf \; display "Config rechargée!"

Pour appliquer cette configuration :

Fenêtre de terminal
# Si tmux n'est pas lancé, il suffit de le lancer
tmux new -s test
# Si vous êtes déjà dans tmux, rechargez :
# Soit avec la commande
tmux source-file ~/.tmux.conf
# Soit avec le raccourci (si configuré)
# C-a r

Si vous utilisez la configuration ci-dessus, vos raccourcis changent :

Avant (défaut)Après (configuré)
C-b (préfixe)C-a (préfixe)
C-b " (diviser horiz.)C-a - (plus intuitif)
C-b % (diviser vert.)`C-a
C-b flèches (navigation)Alt+flèches (sans préfixe !)

Cause : tmux n’est pas installé.

Solution : installez-le (voir section Installation).

Je suis perdu, je ne sais pas si je suis dans tmux

Section intitulée « Je suis perdu, je ne sais pas si je suis dans tmux »

Solution : regardez en bas de votre écran. S’il y a une barre de statut (généralement verte), vous êtes dans tmux. Sinon, vous n’y êtes pas.

Autre méthode :

Fenêtre de terminal
echo $TMUX

Si la commande affiche un chemin (ex: /tmp/tmux-1000/default), vous êtes dans tmux. Si c’est vide, vous n’y êtes pas.

Fenêtre de terminal
tmux ls

Si vous avez des sessions :

api: 3 windows (created Thu Feb 6 09:00:00 2026)
monitoring: 1 windows (created Thu Feb 6 10:00:00 2026)

Si vous n’avez pas de sessions :

no server running on /tmp/tmux-1000/default

J’ai fermé mon terminal par erreur, j’ai tout perdu ?

Section intitulée « J’ai fermé mon terminal par erreur, j’ai tout perdu ? »

*Non -l /home/bob/Projets/test-astro-5/src/content/docs/docs/outils/systeme/tmux.mdx C’est justement le point de tmux. Reconnectez-vous (SSH si c’était distant) et tapez :

Fenêtre de terminal
tmux attach

Vous retrouverez votre session.

Mes couleurs sont bizarres / l’affichage est cassé

Section intitulée « Mes couleurs sont bizarres / l’affichage est cassé »

Cause : problème de compatibilité terminal.

Solution : ajoutez dans ~/.tmux.conf :

Fenêtre de terminal
set -g default-terminal "screen-256color"

Puis rechargez : tmux source-file ~/.tmux.conf

Solution : ajoutez dans ~/.tmux.conf :

Fenêtre de terminal
set -g mouse on

Je n’arrive pas à scroller pour voir l’historique

Section intitulée « Je n’arrive pas à scroller pour voir l’historique »

Solution : entrez en “mode copie” avec C-b [ (ou C-a [ si reconfiguré). Vous pouvez alors scroller avec les flèches ou la molette. Appuyez sur q pour quitter ce mode.

Récapitulons les points essentiels de ce guide :

  1. tmux découple terminal et connexion : vos processus survivent aux déconnexions SSH, coupures réseau, fermeture de terminal

  2. Trois niveaux d’organisation : Session (projet) → Window (onglet) → Pane (division d’écran)

  3. Le préfixe est la clé : par défaut Ctrl+B, toutes les commandes tmux commencent par là

  4. Les 4 commandes indispensables :

    • tmux new -s nom — créer une session
    • C-b d — se détacher (la session continue)
    • tmux ls — lister les sessions
    • tmux attach -t nom — se rattacher
  5. Configuration dans ~/.tmux.conf : personnalisez le préfixe, activez la souris, ajoutez vos raccourcis

  6. tmux est déjà partout : sur la plupart des serveurs Linux, il est déjà installé

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.