Processus et jobs
Progression
#Processus et jobs
Un processus est un programme en cours d’exécution. Il possède un identifiant (PID), des descripteurs de fichiers, de la mémoire et un état. Le shell peut lancer des processus au premier plan (le terminal “attend”) ou en arrière‑plan (le terminal rend la main). Ajoutez &
pour démarrer en arrière‑plan.
Exemple:
1# Lance un serveur HTTP simple au second plan2python -m http.server 8000 &3jobs # liste des jobs en arrière-plan4fg %1 # ramène le job 1 au premier plan
Les signaux permettent de communiquer avec un processus. TERM
demande un arrêt propre, KILL
force l’arrêt immédiatement (irréversible), HUP
signifie souvent “recharge ta configuration”. Préférez toujours TERM
et donnez au programme une chance de nettoyer:
1pidof python | xargs kill -TERM # arrêt gracieux
Pour observer la vie du système, utilisez top
/htop
, ps aux | grep nom
, ou lsof -i :8000
pour voir qui écoute un port.
Sur les distributions modernes, systemd
gère des services pérennes et des timers (planification simple). Les journaux se consultent avec journalctl -u mon-service
.
Enfin, ajuster la priorité (nice) peut aider à laisser de la place aux tâches interactives:
1nice -n 10 longue_tache # priorité plus basse
Astuce: concevez vos scripts pour qu’ils tolèrent d’être relancés (idempotence) et qu’ils gèrent proprement TERM
(cleanup via trap
). Pour détacher durablement un processus d’un terminal, utilisez nohup cmd &
ou, mieux, une unité systemd dédiée plutôt que de « daemoniser » à la main. Quand vous devez fermer le shell mais garder le job, disown
évite l’envoi de SIGHUP.
#Animation: contrôle des jobs
#Diagramme: signaux et TTY
Mini‑exercice: lancez une commande longue (ex: sleep 1000
), suspendez‑la (Ctrl+Z), reprenez‑la en bg
, listez avec jobs
, ramenez‑la en fg
, puis terminez‑la proprement avec kill -TERM %1
. Notez les différences de codes de sortie.