CyberSDF

Reprenez la main sur votre numérique

tmux : garder une session Linux ouverte après SSH

Ordinateur affichant une session tmux divisée en deux panneaux et une seconde fenêtre.

tmux garde une session de terminal active quand vous vous détachez de la fenêtre qui l’affiche. Créez-la avec tmux new -As maintenance, lancez votre commande, détachez-vous avec C-b d, puis revenez avec tmux attach -t maintenance. Le serveur tmux reste sur la machine Linux distante ; votre terminal local n’en est que le client.

Sommaire
  1. Le problème que tmux règle vraiment
  2. Installer tmux et vérifier sa version
  3. Créer une session nommée que vous retrouverez
  4. Session, fenêtre et panneau changent l’action
  5. Reprendre une commande après une connexion SSH coupée
  6. Organiser plusieurs fenêtres sans perdre le fil
  7. Utiliser tmux sous Windows avec WSL
  8. Savoir quand tmux ne suffit plus

Le 18 septembre 2026, un essai local avec tmux 3.4 a conservé une session détachée nommée maintenance avec 2 fenêtres, dont une divisée en 2 panneaux. La commande has-session a renvoyé le code 0. L’essai utilisait un socket dédié et trois processus sleep de 30 secondes ; il ne simule pas une coupure SSH.

Sommaire
  1. Le problème que tmux règle vraiment
  2. Installer tmux et vérifier sa version
  3. Créer une session nommée que vous retrouverez
  4. Session, fenêtre et panneau changent l’action
  5. Reprendre une commande après une connexion SSH coupée
  6. Organiser plusieurs fenêtres sans perdre le fil
  7. Utiliser tmux sous Windows avec WSL
  8. Savoir quand tmux ne suffit plus

Si vous débutez dans le shell, les premiers gestes du terminal Linux donnent les repères de chemin, de commande et de sortie. tmux ajoute ensuite une couche de continuité autour de ce terminal.

Le problème que tmux règle vraiment

Une connexion SSH fournit un terminal distant, mais elle ne transforme pas ce terminal en service permanent. Quand le client SSH disparaît, le shell et les commandes qui lui sont attachés peuvent recevoir une fin de session. Une compilation, une copie ou une migration lancée au mauvais endroit s’arrête alors avec la connexion.

tmux sépare ce qui s’affiche de ce qui travaille. Le serveur tmux gère les programmes ; un client tmux s’attache à une session et l’affiche dans votre terminal. Vous pouvez donc fermer le client, perdre la connexion ou changer de machine, puis rattacher un nouveau client à la même session.

Une session regroupe des fenêtres. Chaque fenêtre contient un ou plusieurs panneaux, et chaque panneau contient un terminal avec son processus. Cette hiérarchie explique pourquoi tmux attach retrouve plusieurs shells alors qu’une simple deuxième connexion SSH en créerait d’autres.

Le manuel tmux d’OpenBSD décrit cette séparation entre serveur, client, session, fenêtre et panneau, ainsi que la survie d’une session après une déconnexion SSH. Le programme n’est pas une sauvegarde : il conserve ce qui tourne encore sur la machine.

Installer tmux et vérifier sa version

Le projet tmux recommande d’utiliser le gestionnaire de paquets de votre système. Sur Debian ou Ubuntu, ouvrez un terminal Linux et installez le paquet :

sudo apt update
sudo apt install tmux
tmux -V

Le tableau d’installation du projet tmux donne aussi les commandes pour Fedora, RHEL, Arch, openSUSE et macOS. Les paquets peuvent proposer une version différente de celle documentée par le projet ; tmux -V est le contrôle à faire avant de recopier une option récente.

Sur une machine distante, installez tmux dans la distribution qui héberge réellement le shell. Une installation locale sur votre ordinateur ne protège pas une commande lancée sur le serveur. Si tmux est déjà présent, passez directement à la création de la session.

Créer une session nommée que vous retrouverez

Une session nommée est plus facile à retrouver qu’une session numérotée. Depuis votre shell, lancez :

tmux new -As maintenance

new est le raccourci de new-session. L’option -s maintenance donne le nom maintenance ; -A rattache la session si elle existe déjà et la crée sinon. La première exécution vous place directement dans tmux.

Une fois dans la session, votre clavier est envoyé au shell du panneau actif. Pour demander une action à tmux, utilisez le préfixe C-b : maintenez Ctrl, pressez b, relâchez, puis pressez la seconde touche. Pour sortir de l’affichage sans arrêter le shell, faites :

C-b d

Le message [detached] indique que le client est parti. La session, elle, reste sur la machine distante. Après une nouvelle connexion SSH, vérifiez les sessions disponibles :

tmux ls
tmux attach -t maintenance

S’il n’existe encore aucune session, la première commande signale qu’il n’y a rien à lister. Reprenez alors tmux new -As maintenance. Si plusieurs noms existent, utilisez le nom complet avec -t au lieu de vous attacher à la session la plus récente par hasard.

Session, fenêtre et panneau changent l’action

Les raccourcis ne font pas tous la même chose. Une session est le conteneur que vous retrouvez après SSH ; une fenêtre remplace l’écran affiché ; un panneau partage cet écran avec un autre terminal.

Besoin Commande ou raccourci Effet
Créer une fenêtre C-b c ou tmux new-window -n logs Ajoute une fenêtre dans la session courante.
Changer de fenêtre C-b n, C-b p ou tmux select-window -t maintenance:1 Affiche la suivante, la précédente ou un numéro choisi.
Renommer la fenêtre C-b , ou tmux rename-window shell Remplace un nom générique par un usage lisible.
Diviser l’écran C-b % ou C-b " % place les panneaux côte à côte ; " les empile.
Passer au panneau suivant C-b o Déplace le clavier vers un autre panneau.
Agrandir temporairement un panneau C-b z Zoome le panneau actif, puis revient à la disposition avec le même raccourci.

Le projet documente les mêmes actions dans son introduction officielle. Un panneau n’est pas une nouvelle session : s’il contient un shell que vous quittez avec exit, ce shell se termine. Pour séparer deux travaux qui doivent être retrouvés indépendamment, créez plutôt deux sessions nommées.

Pour vérifier l’organisation depuis le shell sans parcourir l’écran, utilisez :

tmux list-sessions
tmux list-windows -t maintenance
tmux list-panes -t maintenance:0

Ces commandes lisent l’état de tmux. Elles ne déplacent pas le curseur et ne ferment aucun panneau.

Reprendre une commande après une connexion SSH coupée

Sur un serveur de test ou une machine que vous administrez, le parcours complet tient dans une session nommée. Connectez-vous d’abord :

ssh utilisateur@serveur.example.net
tmux new -As maintenance

Lancez ensuite une commande longue et sans effet sur les données, par exemple une boucle qui affiche l’heure :

for n in 1 2 3 4 5; do
    date -Is
    sleep 30
done

Détachez-vous avec C-b d, fermez votre terminal local ou laissez la connexion se terminer, puis reconnectez-vous. La session est sur le serveur, donc le bon geste est :

ssh utilisateur@serveur.example.net
tmux attach -t maintenance

Vous devez retrouver la sortie de la boucle dans le panneau. Si le programme avait déjà fini, le panneau affiche simplement le retour du shell. Si la machine distante a redémarré, si le serveur tmux a été arrêté ou si le processus a été tué, aucune commande d’attachement ne peut recréer son état.

Pour une vraie commande d’administration, commencez par vérifier le serveur visé et gardez une seconde voie d’accès. Le guide SSH sous Linux explique les clés, la vérification de la clé d’hôte et le bastion ; tmux protège la session de travail, pas l’identité de la connexion.

Organiser plusieurs fenêtres sans perdre le fil

Une session devient utile quand les fenêtres portent un rôle clair. Depuis une session attachée, ouvrez une fenêtre de journaux, renommez la fenêtre de commande et gardez une fenêtre libre pour vérifier le système :

tmux new-window -n logs
tmux rename-window -t maintenance:0 shell
tmux list-windows -t maintenance

Le numéro d’une fenêtre apparaît dans la barre d’état de tmux. L’alias tmux select-window -t maintenance:1 permet de cibler la fenêtre logs depuis un autre shell. Depuis l’intérieur, C-b 0 à C-b 9 sélectionne directement un numéro lorsqu’il existe.

Gardez les panneaux pour deux commandes qui doivent rester visibles ensemble, comme une sortie et son contrôle. Gardez les fenêtres pour des activités qui ont besoin de tout l’espace. Cette distinction évite de réduire un programme interactif à une bande illisible simplement parce qu’un second shell est ouvert.

Si votre travail demande des journaux et des messages d’erreur, utilisez le mécanisme de journalisation du service ou redirigez explicitement la sortie vers un fichier. La mémoire d’écran de tmux facilite la lecture ; elle ne constitue pas un historique d’exploitation durable.

Utiliser tmux sous Windows avec WSL

Sous Windows, lancez tmux dans une distribution Linux WSL, pas dans PowerShell. Le parcours Windows fournit alors un environnement Linux dans lequel le paquet tmux se gère avec le gestionnaire de la distribution.

Si WSL n’est pas encore installé, ouvrez PowerShell en tant qu’administrateur et suivez la procédure Microsoft :

wsl --install

Un redémarrage peut être demandé. Ouvrez ensuite Ubuntu ou une autre distribution installée, puis installez tmux dans cette distribution :

sudo apt update && sudo apt install tmux
tmux -V

La documentation Microsoft sur l’environnement WSL explique aussi pourquoi un projet manipulé par des outils Linux gagne à rester dans le système de fichiers Linux. Windows Terminal peut afficher la distribution WSL, mais le serveur tmux et les processus restent dans Linux.

La touche C-b et les commandes de session gardent le même rôle dans WSL. En revanche, les chemins, les paquets disponibles et les droits appartiennent à la distribution ouverte. Un problème de montage ou de terminal doit donc être diagnostiqué côté WSL avant de modifier la configuration tmux.

Savoir quand tmux ne suffit plus

tmux est le bon outil pour garder une session interactive attachable. Il ne relance pas automatiquement un programme en échec, ne remplace pas un journal centralisé et ne garantit pas la survie d’une machine redémarrée. Une commande qui s’est terminée avec une erreur reste terminée, même si son panneau est toujours visible.

Pour une application qui doit démarrer avec le système, se relancer et écrire dans le journal du système, utilisez plutôt systemd et ses journaux. Pour une tâche qui doit détecter un échec, conserver un état et décider d’une reprise, lisez la méthode de contrôle et de reprise après échec. La session tmux peut rester un espace d’observation, mais elle ne doit pas masquer le besoin d’un mécanisme de service ou de reprise.

Ne modifiez pas la configuration avant d’avoir réussi le cycle créer, détacher, reconnecter et rattacher. Quand ce cycle est acquis, un fichier ~/.tmux.conf peut accueillir une option comprise, par exemple :

set -g mouse on

Rechargez ensuite le fichier avec tmux source-file ~/.tmux.conf ou recréez la session. Le manuel de tmux décrit les emplacements de configuration et les options disponibles ; lisez la version correspondant à votre installation avant de copier un réglage.

Le geste essentiel reste court : une session nommée, une commande dont la cible est comprise, un détachement volontaire et une reconnexion vérifiée. Le reste de tmux devient utile après cette première récupération réussie.