Aller au contenu principal

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:

bashbash
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:

bashbash
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:

bashbash
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

Avant‑plan
Commande en cours (occupe le TTY)
Ctrl+Z (STOP)
Processus suspendu → job
bg %n
Reprendre en arrière‑plan
fg %n
Ramener au premier plan
kill
TERM (gracieux) ou KILL (forcé)

#Diagramme: signaux et TTY

TTY
Shell
Processus
Noyau
1. Ctrl+C (SIGINT)
2. Transmet SIGINT
3. Exit code
4. Ctrl+Z (SIGTSTP)
5. SIGTSTP (suspend)
6. bg → SIGCONT

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.