Chapitre 4.3 - Contrôle des Processus
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Démarrer des processus
- Arrêter et tuer des processus
- Suspendre et reprendre
- Gérer les processus en arrière-plan
- Comprendre les signaux
Démarrer un Processus
Ligne de Commande
# Processus en avant-plan
commande
# Processus en arrière-plan
commande &
# Exemple
sleep 60 &
nohup - Ignorer SIGHUP
# Continuer après déconnexion
nohup commande &
# Rediriger la sortie
nohup commande > output.log 2>&1 &
Arrêter un Processus
kill - Envoyer un Signal
# Signal TERM (terminaison gracieuse)
kill PID
kill -TERM PID
kill -15 PID
# Signal KILL (forcé)
kill -9 PID
kill -KILL PID
# Par nom
killall nom_processus
killall -9 nom_processus # Force
# Par pattern
pkill pattern
pkill -9 pattern
Signaux Courants
| Signal | Numéro | Action |
|---|---|---|
| SIGHUP | 1 | Hang up (recharger config) |
| SIGINT | 2 | Interrupt (Ctrl+C) |
| SIGQUIT | 3 | Quit (core dump) |
| SIGTERM | 15 | Terminate (gracieux) |
| SIGKILL | 9 | Kill (forcé, ne peut être ignoré) |
| SIGSTOP | 19 | Stop (suspendre) |
| SIGCONT | 18 | Continue (reprendre) |
Suspendre et Reprendre
Suspendre
# Envoyer SIGSTOP
kill -STOP PID
kill -19 PID
# Ou avec Ctrl+Z dans le terminal
# (suspend le processus en avant-plan)
Reprendre
# Envoyer SIGCONT
kill -CONT PID
kill -18 PID
# En avant-plan
fg
# En arrière-plan
bg
Processus en Arrière-Plan
jobs - Voir les Jobs
# Voir les jobs
jobs
# Avec PIDs
jobs -l
# Jobs terminés aussi
jobs -a
fg et bg
# Mettre en avant-plan
fg
fg %1 # Job numéro 1
fg %nom # Job par nom
# Mettre en arrière-plan
bg
bg %1
disown - Détacher un Job
# Détacher du terminal
disown %1
disown -h %1 # Ne pas envoyer SIGHUP
Exemples Pratiques
Scénario 1: Processus qui ne répond plus
# 1. Trouver le PID
ps aux | grep processus
# 2. Essayer gracieux
kill PID
# 3. Attendre quelques secondes
sleep 5
# 4. Si toujours là, forcer
kill -9 PID
Scénario 2: Processus en arrière-plan
# Démarrer en arrière-plan
long_script.sh &
# Voir les jobs
jobs
# Mettre en avant-plan
fg %1
# Suspendre (Ctrl+Z)
# Reprendre en arrière-plan
bg %1
Scénario 3: Processus qui continue après déconnexion
# Avec nohup
nohup long_task.sh > output.log 2>&1 &
# Ou avec screen/tmux
screen -S session
# Démarrer processus
# Détacher: Ctrl+A puis D
# Reconnecter: screen -r session
Signaux et leur Usage
SIGTERM (15) - Terminaison Gracieuse
kill -TERM PID
# Le processus peut:
# - Sauvegarder des données
# - Fermer les fichiers
# - Nettoyer les ressources
SIGKILL (9) - Terminaison Forcée
kill -9 PID
# Le processus:
# - Ne peut pas être ignoré
# - Est tué immédiatement
# - Pas de nettoyage possible
Utiliser seulement si SIGTERM ne fonctionne pas!
SIGHUP (1) - Recharger Configuration
# Souvent utilisé pour recharger config
kill -HUP PID
# Exemple: recharger nginx
kill -HUP $(pidof nginx)
Résumé
Dans ce chapitre, vous avez appris:
Démarrer: commande, commande &, nohup
Arrêter: kill, killall, pkill avec signaux
Signaux: TERM (gracieux), KILL (forcé), HUP (recharger)
Suspendre: SIGSTOP, Ctrl+Z
Reprendre: SIGCONT, fg, bg
Arrière-plan: jobs, fg, bg, disown
Prochaines Étapes
Chapitre 4.4: Priorités et Nice Values
Chapitre 4.5: Processus et Ressources
Chapitre créé le: Décembre 2024