Aller au contenu principal

Processus et tâches


Table des matières

  1. Qu'est-ce qu'un processus ?
  2. Visualiser les processus
  3. Foreground et Background
  4. Terminer des processus
  5. Priorités : nice et renice
  6. 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

AttributDescription
PIDProcess ID - identifiant unique
PPIDParent PID - processus parent
UIDUtilisateur propriétaire
ÉtatRunning, Sleeping, Stopped, Zombie
PrioritéNice value (-20 à 19)

États d'un processus

ÉtatCodeDescription
RunningREn cours d'exécution
SleepingSEn attente d'événement
Disk sleepDAttente I/O (non interruptible)
StoppedTArrêté (signal STOP)
ZombieZTerminé, 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
ColonneDescription
USERPropriétaire
PIDProcess ID
%CPUUtilisation CPU
%MEMUtilisation mémoire
VSZMémoire virtuelle (Ko)
RSSMémoire résidente (Ko)
TTYTerminal associé
STATÉtat du processus
STARTHeure de démarrage
TIMETemps CPU cumulé
COMMANDCommande

top - Monitoring temps réel

top

Navigation dans top :

ToucheAction
qQuitter
kTuer un processus (demande PID)
rRenice (changer priorité)
MTrier par mémoire
PTrier par CPU
1Afficher tous les CPU
cAfficher commande complète
fChoisir 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

ModeDescriptionInteraction
ForegroundPremier planBloque le terminal
BackgroundArrière-planTerminal 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

SignalNuméroEffet
SIGTERM15Terminer proprement (défaut)
SIGKILL9Tuer immédiatement (force)
SIGHUP1Recharger configuration
SIGSTOP19Suspendre
SIGCONT18Reprendre
SIGINT2Interrompre (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 :

NicePrioritéUsage
-20Très hauteProcessus critiques
0NormalePar défaut
+19Très basseTâ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

SituationAction
Backup la nuitnice -n 19 backup.sh
Compilationnice -n 10 make
Processus critiquesudo 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+Z suspend
  • bg reprend en background, fg en foreground
  • kill envoie SIGTERM, kill -9 force
  • nice au lancement, renice après
  • nohup pour survivre à la déconnexion

🔝 Retour à la table des matières


← Chapitre précédent | Chapitre suivant : Services et systemd →