Tmux en pratique
Tmux est un multiplexeur de terminal. Il lance un serveur tmux sur la machine distante et organise le travail en session → fenêtre → panneau. Par exemple, une session vps-maintenance peut contenir une fenêtre avec un shell et journalctl, et une autre avec watch ou docker stats pour la supervision.
Si la connexion SSH est interrompue, la session tmux reste sur le VPS. Après une nouvelle connexion SSH, vous pouvez vous y rattacher. Tmux est utile pour les mises à jour, les builds, le suivi des journaux et les migrations longues. Il ne remplace ni une sauvegarde ni une seconde voie d’accès SSH.
Retenir la touche de préfixe
Le préfixe par défaut est Ctrl-b. La plupart des raccourcis se saisissent en plusieurs temps, sans appuyer sur trois touches à la fois :
- Maintenir
Ctrlet appuyer brièvement surb. - Relâcher les deux touches.
- Appuyer sur la touche de commande, par exemple
d.
La notation utilisée ci-dessous est Ctrl-b d.
Une procédure minimale
# Créer une session nommée
tmux new -s maintenance
# Travailler normalement dans tmux
sudo apt update
# Ctrl-b d : se détacher ; les tâches continuent
# Lister les sessions et se rattacher depuis un shell ordinaire
tmux ls
tmux attach -t maintenance
Une commande d’entrée idempotente particulièrement pratique :
tmux new-session -A -s maintenance
Elle se rattache à la session si elle existe, sinon elle la crée.
Fenêtres et panneaux
Nommez les fenêtres selon leur usage, par exemple deploy, logs et monitor, plutôt que d’en ouvrir sept toutes nommées bash.
Consulter l’historique des sorties
Dans tmux, la molette du terminal ne permet pas toujours de parcourir directement l’historique. Appuyer sur :
Ctrl-b [
Cela ouvre le mode copie. Les flèches, Page Up/Page Down ou les touches de type Vim permettent de se déplacer ; q permet de quitter. Pour consulter rapidement des journaux, vous pouvez aussi laisser l’outil limiter sa propre sortie :
journalctl -u docker -n 200 --no-pager
docker compose logs --tail 200
Distinguer Ctrl-Z, le détachement et la sortie
Après un Ctrl-Z accidentel, vérifiez d’abord :
jobs -l
fg %1 # Reprendre la tâche 1 au premier plan
# Ou bg %1 # Continuer en arrière-plan ; journaux et cycle de vie restent liés à ce shell
Pour une tâche longue, commencez dans tmux plutôt que de compter ensuite sur bg.
Une organisation pour le travail quotidien sur le VPS
tmux new -s ops
- Fenêtre
deploy: entrer dans/srv/<service>et utiliser Compose. - Fenêtre
logs:docker compose logs -f --tail 100. - Fenêtre
health:watch -n 2 'docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'.
Il n’est pas nécessaire de conserver toutes les fenêtres indéfiniment. Une session centrée sur la tâche en cours est plus utile qu’un grenier rempli de terminaux.
Problèmes courants
no sessions: la session est terminée ou n’a jamais été créée. Utilisertmux new -s <name>.sessions should be nested with care: tmux a été lancé depuis tmux. Vérifier$TMUX; l’imbrication est généralement inutile.- Le rattachement signale une connexion existante :
tmux attach -d -t <name>détache l’ancien client puis rattache celui-ci. - Une tâche disparaît après un redémarrage : tmux résiste aux coupures SSH, pas au redémarrage du VPS. Les services permanents relèvent d’une politique de redémarrage Docker ou de systemd.
- Vous ne savez plus où vous êtes :
tmux display-message -p '#S:#I.#P'affiche la session, la fenêtre et le panneau.
Terminer une session
Arrêtez de préférence les programmes proprement dans chaque panneau, puis saisissez exit. Pour terminer délibérément une session entière :
tmux kill-session -t maintenance
Cette commande termine les processus de la session ; vérifiez donc son nom avant de l’exécuter.