ps : Lister les processus sur Linux
Table des matières
La commande ps (process status) sous Linux permet d'afficher des informations sur les processus en cours d'exécution sur le système. Elle permet notamment d'afficher les PID (identifiants de processus), les statuts, les consommations de ressources telles que la mémoire et le CPU, les utilisateurs propriétaires et bien plus encore.
Dans la page de manuel, nous pouvons apprendre que la commande ps accepte plusieurs syntaxes au niveau des options :
- UNIX : qui peuvent être groupées et doivent être précédées d'un tiret : ps -ef
- BSD : qui peuvent être groupées et ne sont pas précédées d'un tiret : ps aux
- GNU : options longues qui sont précédées par 2 tirets : ps --pid 1
On retrouve de manière générale les 2 premières syntaxes.
J'utilise les 2 syntaxes, mais le plus souvent j'utilise les options de type UNIX.
La commande ps seule renvoie les processus en cours dans le shell :
C'est assez basique.
L'option -f permet d'afficher plus d'informations :
UID : Utilisateur exécutant le processus
PID : Numéro du processus (Process ID)
PPID : Numéro du processus parent (Parent Process ID)
C : Utilisation CPU
STIME : Heure à laquelle le procesus a démarré
TTY : Terminal TTY qui contrôle ce processus
TIME : Temps CPU accumulé
CMD : Ligne de commande lancée
Pour lister tous les processus d'un utilisateur, on utilisera l'option -u :
Voici un extrait :
On voit bien des commandes que je n'ai pas lancées, liées à ma session graphique.
Pour listez les processus de tous les utilisateurs du système on utilisera l'option -e :
La notation similaire au format BSD est la suivante (donc on ne préfixe pas les options avec un tiret) :
Je vous mets un extrait :
D'autres colones sont présentes avec cette sortie :
USER : Utilisateur exécutant le processus
PID : Numéro du processus (Process ID)
%CPU : Utilisation CPU
%MEM : Utilisation Mémoire physique
VSZ : Mémoire virtuelle du processus (en Kio)
RSS : Mémoire physique (hors pagination) du processus (en Kio)
TTY : Terminal TTY qui contrôle ce processus
STAT : Statut du processus *
START : Heure à laquelle le procesus a démarré
TIME : Temps CPU accumulé
COMMAND : Ligne de commande lancée
*Les statuts de processus sont :
- S (sleeping) : le processus est en attente d'un événement, tel qu'une entrée/sortie.
- R (running) : le processus est en cours d'exécution.
- Z (zombie) : le processus a terminé son exécution, mais n'a pas encore été nettoyé par le système d'exploitation.
- D (disk sleep) : le processus est en attente d'une entrée/sortie bloquante, telle qu'une lecture depuis un disque dur.
- I (Interruptible) : le processus est en attente mais peut être interrompu sans problèmes
- T (stopped) : le processus est en pause,
- X (dead) : le processus a été tué.
Il est possible, pour plus de lisibilité, d'utiliser l'option -H pour dessiner une arborescence :
On voit plus facilement les processus lancés par les autres (extrait) :
On voit bien que kgx est mon terminal. Il a lancé 4 bash (j'ai 4 onglets), ont 1 qui a lancé la commande ps et un qui exécute htop.
On va pouvoir filtrer la sortie si on le souhaite avec l'option -C sur une commande particulière (ici bash) :
On pourra aussi rechercher un processus par son pid via l'option -q (Exemple avec le process 444) :
Introduction
La commande ps (process status) sous Linux permet d'afficher des informations sur les processus en cours d'exécution sur le système. Elle permet notamment d'afficher les PID (identifiants de processus), les statuts, les consommations de ressources telles que la mémoire et le CPU, les utilisateurs propriétaires et bien plus encore.
A propos de la syntaxe
Dans la page de manuel, nous pouvons apprendre que la commande ps accepte plusieurs syntaxes au niveau des options :
- UNIX : qui peuvent être groupées et doivent être précédées d'un tiret : ps -ef
- BSD : qui peuvent être groupées et ne sont pas précédées d'un tiret : ps aux
- GNU : options longues qui sont précédées par 2 tirets : ps --pid 1
On retrouve de manière générale les 2 premières syntaxes.
J'utilise les 2 syntaxes, mais le plus souvent j'utilise les options de type UNIX.
Utiliser ps
La commande ps seule renvoie les processus en cours dans le shell :
Code BASH :
ps
Code :
PID TTY TIME CMD
20468 pts/2 00:00:00 ps
32479 pts/2 00:00:00 bash
C'est assez basique.
L'option -f permet d'afficher plus d'informations :
Code BASH :
ps -f
Code :
UID PID PPID C STIME TTY TIME CMD
adrien 22598 32479 0 15:09 pts/2 00:00:00 ps -f
adrien 32479 8765 0 11:28 pts/2 00:00:00 /bin/bash
UID : Utilisateur exécutant le processus
PID : Numéro du processus (Process ID)
PPID : Numéro du processus parent (Parent Process ID)
C : Utilisation CPU
STIME : Heure à laquelle le procesus a démarré
TTY : Terminal TTY qui contrôle ce processus
TIME : Temps CPU accumulé
CMD : Ligne de commande lancée
Pour lister tous les processus d'un utilisateur, on utilisera l'option -u :
Code BASH :
ps -f -u adrien
Voici un extrait :
Code :
UID PID PPID C STIME TTY TIME CMD
adrien 401 8765 0 15:18 pts/4 00:00:00 /bin/bash
adrien 444 401 3 15:18 pts/4 00:00:40 htop
adrien 3320 7286 0 14:39 tty8 00:00:21 /opt/vivaldi-snapshot/vivaldi-bin --type=rend
adrien 5116 5082 0 10:14 tty8 00:00:00 /usr/libexec/gnome-session-binary
adrien 5132 5116 0 10:14 ? 00:00:00 /usr/bin/ssh-agent -- /usr/bin/gnome-session
adrien 5144 1 0 10:14 tty8 00:00:00 /usr/libexec/gvfsd
adrien 5149 1 0 10:14 tty8 00:00:00 /usr/libexec/at-spi-bus-launcher
adrien 5173 5116 5 10:14 tty8 00:18:53 /usr/bin/gnome-shell
adrien 5577 5116 0 10:14 tty8 00:00:03 /usr/bin/python3.10 /usr/bin/guake
adrien 5747 5577 0 10:14 pts/1 00:00:00 /bin/bash
adrien 8765 1 0 10:42 tty8 00:02:49 /usr/bin/kgx --gapplication-service
adrien 8781 8765 0 10:42 pts/0 00:00:00 /bin/bash
adrien 21763 8765 0 15:09 pts/3 00:00:00 /bin/bash
adrien 28136 32479 0 15:40 pts/2 00:00:00 ps -f -u adrien
adrien 32479 8765 0 11:28 pts/2 00:00:00 /bin/bash
On voit bien des commandes que je n'ai pas lancées, liées à ma session graphique.
Pour listez les processus de tous les utilisateurs du système on utilisera l'option -e :
Code BASH :
ps -ef
La notation similaire au format BSD est la suivante (donc on ne préfixe pas les options avec un tiret) :
Code BASH :
ps aux
Je vous mets un extrait :
Code TEXT :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ntp 4353 0.0 0.0 9368 2032 ? S 10:12 0:00 /usr/sbin/chronyd -f /etc/chro root 4386 0.0 0.0 218264 2548 ? Ssl 10:12 0:00 /usr/sbin/rsyslogd -f /etc/rsy root 4420 0.0 0.0 6444 1964 ? Ss 10:12 0:00 /usr/sbin/crond root 4483 0.0 0.0 234512 8148 ? Ssl 10:12 0:00 /usr/sbin/gdm adrien 8765 0.9 1.1 1937528 188444 tty8 Rl+ 10:42 2:46 /usr/bin/kgx --gapplication-service adrien 8781 0.0 0.0 8860 5736 pts/0 Ss+ 10:42 0:00 /bin/bash adrien 21763 0.0 0.0 8860 5608 pts/3 Ss+ 15:09 0:00 /bin/bash adrien 25959 0.0 0.0 7056 1220 pts/2 R+ 15:38 0:00 ps aux adrien 32479 0.0 0.0 9124 5916 pts/2 Ss 11:28 0:00 /bin/bash
D'autres colones sont présentes avec cette sortie :
USER : Utilisateur exécutant le processus
PID : Numéro du processus (Process ID)
%CPU : Utilisation CPU
%MEM : Utilisation Mémoire physique
VSZ : Mémoire virtuelle du processus (en Kio)
RSS : Mémoire physique (hors pagination) du processus (en Kio)
TTY : Terminal TTY qui contrôle ce processus
STAT : Statut du processus *
START : Heure à laquelle le procesus a démarré
TIME : Temps CPU accumulé
COMMAND : Ligne de commande lancée
*Les statuts de processus sont :
- S (sleeping) : le processus est en attente d'un événement, tel qu'une entrée/sortie.
- R (running) : le processus est en cours d'exécution.
- Z (zombie) : le processus a terminé son exécution, mais n'a pas encore été nettoyé par le système d'exploitation.
- D (disk sleep) : le processus est en attente d'une entrée/sortie bloquante, telle qu'une lecture depuis un disque dur.
- I (Interruptible) : le processus est en attente mais peut être interrompu sans problèmes
- T (stopped) : le processus est en pause,
- X (dead) : le processus a été tué.
Il est possible, pour plus de lisibilité, d'utiliser l'option -H pour dessiner une arborescence :
Code BASH :
ps -fH -u adrien
On voit plus facilement les processus lancés par les autres (extrait) :
Code :
UID PID PPID C STIME TTY TIME CMD
adrien 8765 1 0 10:42 tty8 00:02:39 /usr/bin/kgx --gapplication-service
adrien 8781 8765 0 10:42 pts/0 00:00:00 /bin/bash
adrien 32479 8765 0 11:28 pts/2 00:00:00 /bin/bash
adrien 20759 32479 0 15:34 pts/2 00:00:00 ps -fH -u adrien
adrien 21763 8765 0 15:09 pts/3 00:00:00 /bin/bash
adrien 401 8765 0 15:18 pts/4 00:00:00 /bin/bash
adrien 444 401 3 15:18 pts/4 00:00:29 htop
On voit bien que kgx est mon terminal. Il a lancé 4 bash (j'ai 4 onglets), ont 1 qui a lancé la commande ps et un qui exécute htop.
On va pouvoir filtrer la sortie si on le souhaite avec l'option -C sur une commande particulière (ici bash) :
Code BASH :
ps -f -C bash
Code :
UID PID PPID C STIME TTY TIME CMD
adrien 401 8765 0 15:18 pts/4 00:00:00 /bin/bash
adrien 5747 5577 0 10:14 pts/1 00:00:00 /bin/bash
adrien 8781 8765 0 10:42 pts/0 00:00:00 /bin/bash
adrien 21763 8765 0 15:09 pts/3 00:00:00 /bin/bash
adrien 32479 8765 0 11:28 pts/2 00:00:00 /bin/bash
On pourra aussi rechercher un processus par son pid via l'option -q (Exemple avec le process 444) :
Code BASH :
ps -f -q 444
Code :
UID PID PPID C STIME TTY TIME CMD
adrien 444 401 3 15:18 pts/4 00:00:48 htop