Processus et tâches
Table des matières
- Qu'est-ce qu'un processus ?
- Visualiser les processus
- Foreground et Background
- Terminer des processus
- Priorités : nice et renice
- Exercices pratiques
1 - Qu'est-ce qu'un processus ?
Définition
Un processus est une instance d'un programme en cours d'exécution.
Caractéristiques d'un processus
| Attribut | Description |
|---|---|
| PID | Process ID - identifiant unique |
| PPID | Parent PID - processus parent |
| UID | Utilisateur propriétaire |
| État | Running, Sleeping, Stopped, Zombie |
| Priorité | Nice value (-20 à 19) |
États d'un processus
| État | Code | Description |
|---|---|---|
| Running | R | En cours d'exécution |
| Sleeping | S | En attente d'événement |
| Disk sleep | D | Attente I/O (non interruptible) |
| Stopped | T | Arrêté (signal STOP) |
| Zombie | Z | Terminé, en attente du parent |
🔝 Retour à la table des matières
2 - Visualiser les processus
ps - Snapshot des processus
# Processus du terminal courant
ps
# Tous les processus (style BSD)
ps aux
# Tous les processus (style UNIX)
ps -ef
# Arborescence des processus
ps axjf
# ou
ps -ef --forest
Colonnes de ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 169512 13256 ? Ss Jan10 0:12 /sbin/init
john 1234 0.5 2.3 456789 45678 pts/0 S+ 10:30 0:05 vim file.txt
| Colonne | Description |
|---|---|
| USER | Propriétaire |
| PID | Process ID |
| %CPU | Utilisation CPU |
| %MEM | Utilisation mémoire |
| VSZ | Mémoire virtuelle (Ko) |
| RSS | Mémoire résidente (Ko) |
| TTY | Terminal associé |
| STAT | État du processus |
| START | Heure de démarrage |
| TIME | Temps CPU cumulé |
| COMMAND | Commande |
top - Monitoring temps réel
top
Navigation dans top :
| Touche | Action |
|---|---|
q | Quitter |
k | Tuer un processus (demande PID) |
r | Renice (changer priorité) |
M | Trier par mémoire |
P | Trier par CPU |
1 | Afficher tous les CPU |
c | Afficher commande complète |
f | Choisir les colonnes |
htop - Top amélioré
# Installer si nécessaire
sudo apt install htop
# Lancer
htop
Avantages de htop :
- Interface colorée
- Navigation à la souris
- Arborescence des processus (F5)
- Filtrage facile (F4)
- Actions directes (F9 pour kill)
Commandes utiles
# Compter les processus
ps aux | wc -l
# Processus d'un utilisateur
ps -u john
# Processus par utilisation CPU
ps aux --sort=-%cpu | head -10
# Processus par utilisation mémoire
ps aux --sort=-%mem | head -10
# Trouver un processus spécifique
ps aux | grep nginx
pgrep nginx
pgrep -l nginx # Avec le nom
🔝 Retour à la table des matières
3 - Foreground et Background
Concepts
| Mode | Description | Interaction |
|---|---|---|
| Foreground | Premier plan | Bloque le terminal |
| Background | Arrière-plan | Terminal libre |
Lancer en background
# Avec & à la fin
sleep 100 &
# [1] 12345 (numéro de job et PID)
# Commande longue en background
./script_long.sh &
Contrôler les jobs
# Lancer une commande
sleep 300
# Suspendre avec Ctrl+Z
^Z
# [1]+ Stopped sleep 300
# Voir les jobs
jobs
# [1]+ Stopped sleep 300
# Reprendre en background
bg %1
# ou juste
bg
# Reprendre en foreground
fg %1
# ou juste
fg
Workflow typique
nohup - Survivre à la déconnexion
# Sans nohup : le processus meurt à la déconnexion
./script.sh &
# Avec nohup : survit à la déconnexion
nohup ./script.sh &
# La sortie va dans nohup.out
# Avec redirection personnalisée
nohup ./script.sh > output.log 2>&1 &
disown - Détacher un processus
# Lancer puis détacher
./script.sh &
disown
# Ou directement
./script.sh & disown
🔝 Retour à la table des matières
4 - Terminer des processus
kill - Envoyer des signaux
# Terminer proprement (SIGTERM - signal 15)
kill 12345
kill -15 12345
# Forcer l'arrêt (SIGKILL - signal 9)
kill -9 12345
# Suspendre (SIGSTOP)
kill -STOP 12345
# Reprendre (SIGCONT)
kill -CONT 12345
Signaux courants
| Signal | Numéro | Effet |
|---|---|---|
| SIGTERM | 15 | Terminer proprement (défaut) |
| SIGKILL | 9 | Tuer immédiatement (force) |
| SIGHUP | 1 | Recharger configuration |
| SIGSTOP | 19 | Suspendre |
| SIGCONT | 18 | Reprendre |
| SIGINT | 2 | Interrompre (Ctrl+C) |
killall et pkill
# Tuer par nom de processus
killall nginx
killall -9 firefox
# Avec pkill (plus flexible)
pkill nginx
pkill -9 nginx
# Tuer les processus d'un utilisateur
pkill -u john
# Tuer par pattern
pkill -f "python script.py"
Exemple pratique
# 1. Trouver le PID
pgrep nginx
# ou
ps aux | grep nginx
# 2. Terminer proprement
kill 12345
# 3. Si ne répond pas, forcer
kill -9 12345
# Ou en une ligne
pkill -9 nginx
attention
kill -9 doit être un dernier recours ! Le processus n'a pas le temps de nettoyer (fichiers temporaires, connexions...).
🔝 Retour à la table des matières
5 - Priorités : nice et renice
Concept de priorité
La valeur "nice" détermine la priorité d'un processus :
| Nice | Priorité | Usage |
|---|---|---|
| -20 | Très haute | Processus critiques |
| 0 | Normale | Par défaut |
| +19 | Très basse | Tâches de fond |
nice - Lancer avec une priorité
# Lancer avec priorité basse (gentil avec les autres)
nice -n 10 ./script.sh
# Lancer avec priorité haute (nécessite root)
sudo nice -n -10 ./processus_important
renice - Modifier la priorité
# Changer la priorité d'un processus existant
renice 10 -p 12345
# Baisser la priorité (utilisateur normal peut augmenter nice)
renice 15 -p 12345
# Augmenter la priorité (nécessite root)
sudo renice -5 -p 12345
# Changer pour tous les processus d'un utilisateur
sudo renice 5 -u john
Voir la priorité
# Dans top/htop : colonne NI
top
# Avec ps
ps -eo pid,ni,comm
Cas d'usage
| Situation | Action |
|---|---|
| Backup la nuit | nice -n 19 backup.sh |
| Compilation | nice -n 10 make |
| Processus critique | sudo nice -n -10 service |
🔝 Retour à la table des matières
6 - Exercices pratiques
Exercice 1 : Observation
# 1. Lancez htop
htop
# Observez les processus, triez par CPU (F6)
# 2. Dans un autre terminal, identifiez les 5 processus
# les plus gourmands en CPU
ps aux --sort=-%cpu | head -6
# 3. Identifiez les 5 plus gourmands en mémoire
ps aux --sort=-%mem | head -6
Exercice 2 : Gestion background/foreground
# 1. Lancez une commande longue
sleep 300
# 2. Suspendez-la
# Appuyez sur Ctrl+Z
# 3. Vérifiez les jobs
jobs
# 4. Relancez en background
bg
# 5. Vérifiez qu'elle tourne
jobs
ps aux | grep sleep
# 6. Ramenez en foreground et terminez
fg
# Puis Ctrl+C
Exercice 3 : Kill et signaux
# 1. Lancez un processus en background
sleep 600 &
# Notez le PID affiché
# 2. Vérifiez qu'il tourne
ps aux | grep sleep
# 3. Envoyez SIGSTOP pour le suspendre
kill -STOP <PID>
# 4. Vérifiez son état (T = Stopped)
ps aux | grep sleep
# 5. Reprenez avec SIGCONT
kill -CONT <PID>
# 6. Terminez-le proprement
kill <PID>
Quiz
Q1. Quel signal force la terminaison immédiate ?
Réponse
SIGKILL (signal 9) : kill -9 PID
Q2. Comment lancer une commande en background ?
Réponse
Ajouter & à la fin : commande &
Q3. Quelle commande affiche les processus en temps réel ?
Réponse
top ou htop
🔝 Retour à la table des matières
Points clés à retenir
- Un processus = programme en exécution (PID unique)
ps aux= snapshot,top/htop= temps réel&lance en background,Ctrl+Zsuspendbgreprend en background,fgen foregroundkillenvoie SIGTERM,kill -9forceniceau lancement,reniceaprèsnohuppour survivre à la déconnexion
🔝 Retour à la table des matières
← Chapitre précédent | Chapitre suivant : Services et systemd →