ps

La commande ps permet de lister les processus. Le nom de la commande est l'acronyme de "process status" signifiant "état des processus".

Utilisation

La commande ps possède de nombreuses options et n'est pratiquement jamais utilisé sans aucune options. Finalement seule 3 options sont utilisés régulièrement: "a", "x" et "f". Avant de voir l'utilisation de la commande, voyons brièvement ces trois options:

a
Affiche aussi les processus des autres utilisateurs
x
Affiche les processus qui ne sont pas lié à un terminal
f
Affiche les processus en hiérarchie parent-enfant

Ces options peuvent être utilisé avec ou sans tiret.

Lorsque la commande est utilisé sans aucune option, elle affiche tout les processus de l'utilisateur courant à condition qu'ils soient lié à un terminal. Voici un exemple:

$ ps
  PID TTY          TIME CMD
31919 pts/0    00:00:00 bash
12365 pts/0    00:00:00 ps

La première colonne donne le numéro unique de chaque processus (le PID). La seconde colonne donne le terminal sur lequel la commande est attaché. La troisième commande donne le temps total durant lequel le processu à utilisé le processeur. Finalement, la dernière colonne donne le nom de la commande.

Afficher tout les processus

Souvent les informations fournie par la commande sans option ne sont pas suffisante car on cherche aussi à voir les processus des démons, on utilise donc l'option "x" pour les afficher. Une autre option pratique est "a" qui permet d'afficher les processus des autres utilisateurs.

L'option "ax" est donc souvent utilisé en pratique. Voici par exemple le résultat de la commande sur le serveur qui héberge la base de donnée de ce site:

$ ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:26 init [2] 
17347 ?        S      0:56 /usr/lib/postgresql/8.1/bin/postmaster
17349 ?        S      0:00 postgres: writer process
17350 ?        S      0:26 postgres: stats buffer process
17351 ?        S      0:20 postgres: stats collector process
20683 pts/0    R+     0:00 login
20684 pts/2    Ss     0:00 /bin/bash -login
20689 pts/2    R+     0:00 ps ax
...

Afficher la hiérarchie

Les processus connaissent le numéro du processus qui les a créé et forment ainsi une hiérarchie de processus parent-enfant. L'option "h" permet d'afficher cette hiérachie. Avec cette option, les enfants d'un processus sont décalé vers la droite dans l'affichage.

Voici le même exemple que le précédent en ajoutant l'option "h":

$ ps afx
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:26 init [2]
20683 pts/0    R+     0:00 login
20684 pts/2    Ss     0:00  \_ /bin/bash -login
21286 pts/2    R+     0:00      \_ ps afx
17347 ?        S      0:56 /usr/lib/postgresql/8.1/bin/postmaster
17349 ?        S      0:00  \_ postgres: writer process
17350 ?        S      0:26  \_ postgres: stats buffer process
17351 ?        S      0:20      \_ postgres: stats collector process

Page de manuel

La page de manuel décrit la commande et ses options. La commande ps utilisé sur Linux vient du projet GNU et est beaucoup plus riche que la commande équivalente qu'on retrouve sur de nombreux Unix commerciaux. Les options GNU sont décrite dans la page de manuel mais les différences avec d'autres version de ps ne sont pas explicité.