Guide pour comprendre la gestion des processus Linux avec 'ps' et 'kill'

Maîtrisez les compétences essentielles d'administration système Linux en apprenant à gérer les applications en cours d'exécution à l'aide de `ps` et `kill`. Ce guide détaille comment utiliser `ps` pour inspecter les identifiants de processus (PID), l'utilisation des ressources et les états, et comment utiliser `kill` pour envoyer des signaux spécifiques — de la terminaison normale (SIGTERM) à l'interruption forcée (SIGKILL) — assurant un fonctionnement du système stable et contrôlé.

37 vues

Guide pour comprendre la gestion des processus sous Linux avec 'ps' et 'kill'

La gestion des processus est fondamentale pour une administration système Linux efficace. Lorsque les applications deviennent non réactives, consomment des ressources excessives ou doivent être redémarrées proprement, savoir comment les identifier et interagir avec elles est crucial. Ce guide sert d'introduction complète à l'épine dorsale de la gestion des processus sous Linux : la commande ps pour visualiser les états des processus et la commande kill pour envoyer des signaux afin de gérer leur cycle de vie.

Comprendre comment Linux gère les programmes en cours d'exécution — chacun se voyant attribuer un identifiant de processus (PID) unique — permet aux administrateurs de maintenir la stabilité du système, de résoudre les goulots d'étranglement de performance et de s'assurer que les services fonctionnent comme prévu. Nous explorerons la syntaxe essentielle et les indicateurs courants qui font de ces commandes des outils indispensables dans la boîte à outils de tout administrateur système.

Le modèle de processus Linux : PIDs et états

Sous Linux, chaque programme, service ou tâche en cours d'exécution est traité comme un processus. Chaque processus est identifié de manière unique par un identifiant de processus (PID), un entier positif attribué par le noyau lors de sa création. Ce PID est le moyen principal par lequel les outils système référencent et manipulent un processus spécifique.

Les processus passent par divers états (par exemple, Running, Sleeping, Stopped, Zombie). Connaître l'état peut immédiatement orienter les étapes de dépannage.

Visualisation des processus avec la commande ps

La commande ps (process status) est utilisée pour afficher des informations sur les processus actuellement en cours d'exécution. Comme la sortie peut être écrasante, différentes options sont utilisées pour sélectionner les processus à afficher et les colonnes d'informations à inclure.

Syntaxe et indicateurs essentiels de ps

Il existe deux styles principaux pour les indicateurs ps : style Unix (précédé de -) et style BSD (sans préfixe). La pratique moderne privilégie souvent la combinaison d'indicateurs de style Unix pour des vues complètes.

1. Visualisation de tous les processus (style BSD)

La commande la plus courante pour un aperçu du système est ps aux.

  • a: Affiche les processus de tous les utilisateurs.
  • u: Affiche les processus dans un format orienté utilisateur (affichant l'utilisateur, l'utilisation du CPU, l'utilisation de la mémoire, etc.).
  • x: Inclut les processus qui n'ont pas de terminal de contrôle (comme les démons en arrière-plan).
ps aux

2. Visualisation des processus dans un format standard (style UNIX)

La commande ps -ef fournit une liste complète dans un format plus ancien, mais toujours largement utilisé.

  • -e: Sélectionne tous les processus.
  • -f: Affiche la liste en format complet (y compris le PPID et les arguments de la commande).
ps -ef

Interprétation des colonnes de sortie clés

Indépendamment des indicateurs utilisés, certaines colonnes sont critiques pour la gestion des processus :

Colonne Description
PID Identifiant de processus (l'identifiant unique)
PPID Identifiant du processus parent (le PID du processus qui a lancé celui-ci)
USER L'utilisateur qui possède le processus
%CPU Pourcentage du temps CPU utilisé
%MEM Pourcentage de la mémoire physique utilisée
VSZ Taille de la mémoire virtuelle (en KiB)
RSS Resident Set Size (mémoire physique utilisée, en KiB)
STAT État actuel du processus (par exemple, R=Running, S=Sleeping, Z=Zombie)
COMMAND La commande qui a lancé le processus

Filtrage des processus avec grep

Pour trouver un processus spécifique, il est courant de rediriger la sortie de ps vers grep.

Exemple : Recherche de toutes les instances en cours du serveur web Apache (httpd) :

ps aux | grep httpd

Astuce : Lorsque vous utilisez ps | grep, vous verrez souvent la commande grep elle-même listée dans la sortie. Pour filtrer cela, utilisez la notation entre crochets dans votre modèle de recherche :
bash ps aux | grep '[h]ttpd'

Gestion des processus avec la commande kill

La commande kill n'arrête pas seulement les processus ; elle leur envoie des signaux. Le comportement par défaut est de demander une terminaison propre, mais d'autres signaux peuvent instruire un processus de relire les fichiers de configuration, d'arrêter temporairement son exécution ou de forcer une sortie immédiate.

Comprendre les signaux

Les signaux sont des codes numériques ou mnémotechniques standardisés. Vous pouvez lister les signaux disponibles en utilisant kill -l.

Nom du signal Numéro du signal Description
SIGTERM 15 Le signal de terminaison par défaut. Demande au processus de s'arrêter proprement.
SIGKILL 9 Le signal de terminaison immédiat et forcé. Le processus ne peut pas l'ignorer.
SIGHUP 1 Signal de raccrochage (hangup), souvent utilisé par les démons pour relire les fichiers de configuration.
SIGSTOP 19 Arrête (met en pause) un processus sans le terminer.
SIGCONT 18 Reprend un processus arrêté.

Envoi de signaux avec kill

La syntaxe de base de la commande kill est la suivante :

kill -SIGNAL PID

1. Terminaison propre (meilleure pratique)

Essayez toujours de terminer un processus proprement en utilisant d'abord SIGTERM (signal 15). Cela donne à l'application le temps de sauvegarder les données et de fermer les connexions.

kill 12345  # Par défaut SIGTERM (15)
# OU
kill -15 12345

2. Terminaison forcée (dernier recours)

Si un processus ne répond pas et ignore SIGTERM, utilisez SIGKILL (signal 9). Cela arrête le processus instantanément, sans nettoyage, ce qui peut potentiellement entraîner une perte ou une corruption de données dans certaines applications.

kill -9 12345

Gestion des processus par nom : pkill et killall

Bien que ps et kill s'appuient sur les PID, il est parfois plus rapide de cibler les processus par leur nom. Utilisez ces commandes avec une extrême prudence, car elles peuvent affecter plusieurs processus simultanément.

killall

Termine tous les processus correspondant exactement au nom de processus fourni.

killall httpd  # Envoie SIGTERM à tous les processus nommés 'httpd'
killall -9 cron  # Tue de force tous les processus 'cron'

pkill

Permet la correspondance de motifs (expressions régulières) lors de la sélection des processus à signaler, offrant plus de flexibilité que killall.

# Tue tout processus dont le nom de commande contient 'firefox'
pkill -f firefox

Avertissement sur killall et pkill : Si vous ciblez accidentellement un processus système critique (comme init ou systemd), vous pouvez déstabiliser ou faire planter l'ensemble de votre système d'exploitation. Vérifiez toujours le PID cible à l'aide de ps avant d'utiliser killall ou pkill avec des motifs larges.

Résumé du flux de travail de gestion des processus

Pour dépanner une application incontrôlée, suivez cette approche systématique :

  1. Identifier : Utilisez ps aux | grep <nom_du_processus> pour trouver le PID du processus et vérifier son état.
  2. Vérifier l'état : Examinez la colonne STAT. Si c'est Z (Zombie), le processus parent est défectueux et un redémarrage pourrait être nécessaire si le parent ne peut pas être arrêté.
  3. Tenter un arrêt propre : Envoyez SIGTERM ( kill PID par défaut). Attendez quelques secondes.
  4. Vérifier l'arrêt : Exécutez ps à nouveau.
  5. Arrêt forcé (si nécessaire) : Si le processus persiste, envoyez SIGKILL (kill -9 PID).

Maîtriser ps et kill est essentiel pour maintenir un environnement Linux sain et réactif. En comprenant les PID et les différents signaux disponibles, les administrateurs acquièrent un contrôle précis sur l'exécution du système.