Leçon 6 / 8
Leçon 06 · Partie 2 — Aller plus loin

Processus et services

Qu'est-ce qu'un processus ?

Un processus est un programme en cours d'exécution. Quand tu lances nginx, python ou vim, Linux crée un processus qui lui attribue un identifiant unique : le PID (Process ID).

Chaque processus a un processus parent (PPID). Tout part du processus systemd (PID 1) qui démarre au boot et gère tous les autres.

Surveiller les processus

# Liste des processus de l'utilisateur courant
ps

# Tous les processus du système, format détaillé
ps aux

# Chercher un processus par nom
ps aux | grep nginx

# Affichage interactif en temps réel
top

# Version améliorée de top (à installer : apt install htop)
htop

# Trouver le PID d'un processus par son nom
pgrep nginx

# Afficher les processus en arbre
pstree

ps aux | grep nginx est la commande la plus utilisée pour vérifier si un service tourne. La colonne %CPU et %MEM de top te montrent ce qui consomme le plus de ressources.

Tuer des processus — kill et killall

Pour arrêter un processus, on lui envoie un signal. Les deux plus importants :

  • SIGTERM (15) — demande poliment au processus de s'arrêter (nettoyage possible)
  • SIGKILL (9) — tue le processus immédiatement, sans pitié
# Tuer un processus par son PID (SIGTERM par défaut)
kill 1234

# Tuer un processus de force (SIGKILL)
kill -9 1234

# Tuer tous les processus avec ce nom
killall nginx

# Tuer par nom (comme pgrep + kill)
pkill nginx
⚠️

Utilise kill -9 en dernier recours seulement. Le processus n'a pas le temps de sauvegarder ses données ou de libérer ses ressources. Commence toujours par un kill simple (SIGTERM), et attends quelques secondes.

Services et systemctl

Un daemon (ou service) est un processus qui tourne en arrière-plan en permanence : serveur web, base de données, SSH, etc. Sous Linux moderne, ils sont gérés par systemd via la commande systemctl.

# Voir le statut d'un service
systemctl status nginx

# Démarrer un service
sudo systemctl start nginx

# Arrêter un service
sudo systemctl stop nginx

# Redémarrer un service
sudo systemctl restart nginx

# Recharger la configuration sans redémarrage
sudo systemctl reload nginx

# Activer au démarrage (survit au reboot)
sudo systemctl enable nginx

# Désactiver au démarrage
sudo systemctl disable nginx

# Lister tous les services actifs
systemctl list-units --type=service --state=running
💡

systemctl enable et systemctl start sont deux choses différentes. start lance le service maintenant. enable le configure pour démarrer automatiquement au prochain boot. En production, tu veux souvent les deux : sudo systemctl enable --now nginx.

// À retenir
  • Chaque programme qui tourne est un processus avec un PID unique.
  • ps aux liste tous les processus. top / htop les affiche en temps réel.
  • kill PID arrête proprement. kill -9 PID force l'arrêt.
  • Un daemon est un service qui tourne en arrière-plan (nginx, ssh, mysql...).
  • systemctl start/stop/status/enable/disable gère les services sous systemd.