Aller au contenu principal

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​

SignalNuméroAction
SIGHUP1Hang up (recharger config)
SIGINT2Interrupt (Ctrl+C)
SIGQUIT3Quit (core dump)
SIGTERM15Terminate (gracieux)
SIGKILL9Kill (forcé, ne peut être ignoré)
SIGSTOP19Stop (suspendre)
SIGCONT18Continue (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