Linux / Commande ps : afficher les processus, PID et états

ps affiche un instantané des processus sélectionnés au moment de son exécution. Il permet d'identifier un programme par son PID, de retrouver son parent et de lire son état. Pour observer une évolution avec des rafraîchissements successifs, utilisez plutôt top ou htop.

Choisir les processus à afficher

ps [options]

Les exemples concernent ps du projet procps-ng sous Linux. Sans option, cette implémentation sélectionne normalement les processus dont l'utilisateur effectif et le terminal correspondent à ceux de l'appelant :

ps

Une liste courte ne signifie donc pas que le système ne fait fonctionner que ces programmes. Pour afficher tous les processus visibles dans le contexte où vous exécutez la commande, avec un format détaillé :

ps -ef

Dans cette combinaison, -e élargit la sélection à tous les processus et -f choisit un affichage détaillé. Les colonnes incluent notamment les identifiants du processus et de son parent. Dans un conteneur, le contexte de visibilité peut différer de celui de l'hôte.

Sélectionner un PID et les colonnes utiles

Le PID est l'identifiant d'un processus ; le PPID est celui de son parent. Remplacez 1234 par le PID que vous souhaitez examiner :

ps -p 1234 -o pid,ppid,user,stat,cmd

-p choisit le PID et -o définit les colonnes ainsi que leur ordre. Pour un essai directement dans un terminal Bash, vous pouvez examiner le shell courant sans deviner un numéro :

ps -o pid,ppid,stat,comm -p "$$"

$$ est développé par Bash en PID du shell. Un affichage illustratif pourrait être :

    PID    PPID STAT COMMAND
   4321    4100 Ss   bash

Les numéros, le nom et les indicateurs exacts dépendent de votre session. comm affiche le nom de commande, tandis que cmd affiche sa ligne d'arguments, dans les limites de ce qui est disponible. Des arguments peuvent contenir des informations à retirer avant de partager un relevé de diagnostic.

Interpréter la colonne STAT

La première lettre décrit l'état principal ; les caractères suivants apportent des indications supplémentaires. Un processus qui attend n'est pas nécessairement en panne.

Code Interprétation
R En cours d'exécution ou prêt à être exécuté.
S Attente interruptible, par exemple d'un événement.
D Attente non interruptible, généralement liée aux entrées-sorties.
T Arrêté par un signal de contrôle des tâches.
Z Processus terminé dont le parent n'a pas encore récupéré l'état de fin : un zombie.

Dans l'exemple Ss, le S représente l'attente interruptible et le s minuscule indique un chef de session. Ce sont deux informations distinctes. Un seul relevé ne permet pas de conclure qu'un état d'attente dure anormalement longtemps ; rapprochez-le du comportement de l'application et de plusieurs observations.

Distinguer -ef, aux et les mesures de ressources

ps aux

Cette forme BSD sans tiret affiche une sélection large et des colonnes orientées utilisateur et ressources. Ne transformez pas mécaniquement aux en -aux : le mélange de conventions peut changer l'interprétation. Les options Unix ont un tiret, les options BSD de cette forme n'en ont pas et les options longues GNU en ont deux.

Les pourcentages ne sont pas nécessairement des mesures instantanées comparables à celles d'un écran top. Dans procps-ng ps, le pourcentage CPU correspond au temps processeur rapporté au temps écoulé depuis le démarrage du processus. Une pointe récente peut donc rester peu visible pour un programme ancien.

Un affichage tronqué ne prouve pas non plus que le nom du programme est court. Utilisez un format de colonnes adapté à votre diagnostic et lisez man ps pour les mots-clés pris en charge par la version installée.

Vérifier l'identité avant d'agir

Une commande telle que ps | grep nom peut inclure grep lui-même et ne sélectionne que la sortie produite en amont. Pour rechercher des PID par nom, pgrep est souvent plus adapté ; vérifiez ensuite le PID, le parent et la commande du candidat avec ps.

Un processus peut se terminer entre la consultation et une intervention, et son PID peut être réutilisé plus tard. Avant d'envoyer un signal, contrôlez de nouveau la cible. La présence d'un processus ne garantit pas que le service répond correctement : complétez avec les journaux et une vérification de son fonctionnement attendu.

La page de manuel de ps du projet procps-ng décrit la sélection, les formats et les codes d'état. Les variantes BSD, BusyBox ou les couches de compatibilité peuvent accepter d'autres options : ne considérez pas cette syntaxe Linux comme universelle.