Linux — utilisation avancée et administration · Étape 13

Travaille avec terminaux et sessions persistantes

Distingue terminal, session et job, puis utilise nohup, setsid, tmux ou screen selon le besoin.

Durée indicative · ~1 h 20Niveau intermédiairePrérequis conseillé · Leçon 12 — signaux, priorité et jobsPratique · TP
L’idée reçue

« Ajouter & garantit qu’une commande survivra à la fermeture du terminal. »

& place seulement un job en arrière-plan du shell courant. La déconnexion, SIGHUP, les flux encore attachés et la politique du shell peuvent toujours l’arrêter.

01Identifie ton terminal

tty
ps -o pid,ppid,pgid,sid,tpgid,tty,stat,cmd -p $$
who
w

Un pseudo-terminal SSH apparaît souvent sous la forme pts/N. Un processus sans terminal affiche généralement ? dans la colonne TTY.

02Observe la session du laboratoire

./module3-processes-software-lab.sh start
./module3-processes-software-lab.sh status
Lorsque setsid est disponible, le PID parent devient aussi PGID et SID. L’arbre est séparé de la session interactive qui a lancé le script.

03Compare les mécanismes

Mécanisme
Ce qu’il apporte
Limite
&
arrière-plan du shell
pas de persistance garantie
nohup
ignore SIGHUP et redirige les sorties
pas de terminal réattachable
disown
retire un job de la table du shell
fonction du shell, pas un superviseur
setsid
nouvelle session
pas d’interface de reconnexion
tmux/screen
terminal détachable et réattachable
outil interactif, pas un service système

04Lance une commande avec nohup

nohup sh -c 'for n in 1 2 3 4 5; do date -u; sleep 2; done' > /tmp/soria-nohup-demo.log 2>&1 &
nohup_pid=$!
printf 'pid=%s
' "$nohup_pid"
ps -o pid,ppid,sid,tty,stat,cmd -p "$nohup_pid"
tail -f /tmp/soria-nohup-demo.log

Quitte tail -f avec Ctrl+C. Le processus suivi reste indépendant du lecteur de journal.

05Utilise une session réattachable

command -v tmux
tmux new-session -s soria-linux
tmux list-sessions

Dans tmux, détache-toi avec Ctrl+b puis d, et reviens avec tmux attach -t soria-linux. Avec screen, les commandes équivalentes sont screen -S soria-linux et screen -r soria-linux.

06Choisis entre session et service

Une session persistante convient à une opération interactive temporaire. Un processus qui doit redémarrer automatiquement, démarrer au boot et être journalisé doit devenir un service systemd, étudié dans le module suivant.

Challenge autonome

Prépare une opération longue

Choisis entre nohup et tmux pour une copie de données simulée de vingt minutes. Documente les flux, le PID, la manière de suivre l’avancement, la reconnexion et l’arrêt propre.

Ce que tu retiens

Un job en arrière-plan, une session persistante et un service ne répondent pas au même besoin. Le bon choix dépend de la reconnexion, du redémarrage, de la supervision et du caractère temporaire ou permanent.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.