ps

Auteur: Ikipou

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é.

For a time I stood
pondering on circle sizes. The
large computer mainframe quietly
processed all of its assembly code. Inside my entire
hope lay for figuring out an elusive expansion. Value : pi.
Decimals expected soon. I nervously entered a format procedure.
The mainframe processed the request. Error. I, again entering it,
carefully retyped. This iteration gave zero error printouts in all - success.
Intently I waited. Soon, roused by thoughts within me, appeared narrative
mnemonics relating digits to verbiage ! The idea appeared to exist but only in
abbreviated fashion - little phrases typically. Pressing on I then resolved, deciding
firmly about a sum of decimals to use - likely around four hundred, presuming the
computer code soon halted ! Pondering these ideas, words appealed to me. But a
problem of zeros did exist. Pondering more, solution subsequently appeared. Zero
suggests a punctuation element. Very novel ! My thoughts were culminated. No periods, I
concluded. All residual marks of punctuation = zeros. First digit expansion answer then came
before me. On examining some problems unhappily arose. That imbecillic bug ! The printout I
processed showed four nine as foremost decimals. Manifestly troubling. Totally every number
looked wrong. Repairing the bug took much effort. A pi mnemonic with letters truly seemed
good. Counting of all the letters probably should suffice. Reaching for a record would be
helpful. Consequently, I continued, expecting a good final answer from computer. First
number slowly displayed on the flat screen -3. Good. Trailing digits apparently were right
also. Now my memory scheme must be probably implementable. The technique was
chosen, elegant in scheme : by self reference a tale mnemonically helpful was
ensured. An able title suddenly existed - "Circle Digits". Taking pen I began.
Words emanated uneasily. I desired more synonyms. Speedily I found my
(alongside me) Thesaurus. Rogets is probably an essential in doing this,
instantly I decided. I wrote and erased more. The Rogets clearly
assisted immensely. My story proceeded (how lovely !) faultlessly.
The end, above all, would soon joyfully overtake. So, this
memory helper story is incontestably complete. Soon I
will locate publisher. There a narrative will I
trust immediately appear producing
fame. The end.
-- Keith, Michael ; Circle digits : a self referential story