Le ps est une commande intégrée utilisée dans les systèmes d'exploitation Unix/Linux pour répertorier les processus en cours d'exécution. Il affiche un instantané statique avec des informations sur les processus tandis que top, htop et les vues montrent des mises à jour répétitives.
La commande Ps est livrée avec de nombreuses options pour manipuler les sorties. Il extrait toutes les informations des processus du système de fichiers virtuel /proc.
Ce tutoriel se concentrera sur l'explication de la façon d'utiliser la commande ps avec quelques exemples pratiques
La syntaxe de la commande ps
La syntaxe de base pour l'utilisation de la commande ps est la suivante :
$ ps [options]
Les 'options' de la commande ps peuvent être :
- Options UNIX - précédées d'un tiret
- Options BSD - doivent être utilisées sans tiret
- Options longues GNU - précédées de deux tirets
Il s'agit d'une utilisation très basique de la commande ps. Tapez simplement "ps" sur votre console pour voir le résultat :
$ ps
Par défaut, il nous montre quatre colonnes d'informations.
- PID est un ID de processus de la commande en cours d'exécution (CMD)
- TTY est un endroit où la commande en cours d'exécution s'exécute
- TIME indique combien de temps est utilisé par le processeur lors de l'exécution de la commande
- CMD est une commande qui s'exécute en tant que processus courant
L'exécution de la commande ps sans aucune option n'est qu'un format simple de la commande, elle ne renvoie pas beaucoup d'informations. Afin de tirer le meilleur parti de la puissance de la commande ps, exécutons-la avec des options supplémentaires qui seront expliquées plus en détail dans les sections suivantes.
01) Afficher tous les processus (format UNIX)
Pour afficher tous les processus de votre système Linux, vous pouvez exécuter l'une des commandes suivantes :
$ ps -A
ou :
$ ps -e
De plus, pour lister tous les processus en cours d'exécution, lancez :
$ ps -r
02) Afficher tous les processus (format BSD)
Pour voir tous les processus de votre système Linux à l'aide de la commande ps au format BSD, vous pouvez exécuter les commandes suivantes :
$ ps ax
ou
$ ps aux
Où :
- USER - l'utilisateur exécute le processus
- PID - l'identifiant du processus
- %CPU / %MEM - le pourcentage de CPU/RAM occupé par les processus
- VSZ - la taille de la mémoire virtuelle occupée par les processus
- RSS - la taille de la mémoire physique occupée par les processus
- START - heure de début
- STAT - l'état du processus dans lequel :S (en veille), R (en cours d'exécution), I (sommeil interruptible).
- Temps :affiche le temps CPU accordé par le noyau pour ce processus en cours d'exécution.
- COMMAND - la commande qui s'exécute en tant que processus en cours
03) Afficher tous les processus exécutés par une commande
Pour lister tous les processus qui seront exécutés par une commande, utilisons la syntaxe suivante :
$ ps -C <command_name>
Par exemple, listez tous les processus de la commande '/usr/sbin/kerneloops' en lançant :
$ ps -C kerneloops
Vous pouvez également utiliser des arguments sous la forme d'une liste séparée par des blancs ou des virgules, par exemple :
$ ps -C sshd,systemd
04) Afficher tous les processus exécutés par un utilisateur
Si vous souhaitez répertorier le processus par utilisateur dont l'ID utilisateur est 1000, exécutons la commande suivante :
$ ps -u 1000
Vous pouvez également rechercher un processus par nom d'utilisateur :
$ ps -U root -u root u
Le paramètre -U parameter
sélectionnera par real user ID (RUID)
. Il sélectionne les processus dont le véritable nom d'utilisateur ou ID se trouve dans la liste des utilisateurs. L'ID utilisateur réel identifie l'utilisateur qui a créé le processus.
Alors que le paramètre -u paramater
sélectionnera par ID utilisateur effectif (EUID)
05) Afficher les processus appartenant au groupe
Afin de lister tous les processus appartenant à un nom de groupe spécifique, exécutons la commande avec -fG
option. Par exemple :
$ ps -fG cas
Afin d'afficher tous les processus par identifiant de groupe, vous pouvez exécuter la commande avec l'option '-g'. Par exemple :
$ ps -g 1
Sortie :
PID TTY TIME CMD
1 ? 00:00:03 systemd
06) Afficher les processus par PID
Vous pouvez répertorier tous les processus par PID en exécutant la commande ps avec l'option '-fp'. Par exemple :
$ ps -fp 34531
Sortie :
UID PID PPID C STIME TTY TIME CMD
cas 34531 1 0 06:16 ? 00:00:00 /lib/systemd/systemd --user
De plus, afin de lister tous les processus par PPID, lançons la commande avec l'option '--ppid' :
$ ps -f --ppid 34529
Sortie :
UID PID PPID C STIME TTY TIME CMD
cas 34609 34529 0 06:16 ? 00:00:00 sshd: cas@pts/0
07) Afficher les processus par TTY
Afin d'afficher tous les processus par TTY, vous pouvez exécuter la commande avec l'option '-t'. Par exemple :
$ ps -t tty1
08) Afficher les processus appartenant à l'utilisateur actuel
Pour lister tous les processus en cours d'exécution par l'utilisateur actuel, exécutons la commande avec l'option '-x' :
$ ps -x
09) Afficher tous les processus avec une liste complète
Par exemple, lançons la commande ps avec -f
option, pour afficher tous les processus au format complet :
$ ps -af
10) Afficher tous les processus avec un format supplémentaire
De plus, pour afficher la liste complète supplémentaire du résultat, exécutez la commande ps avec -F
option. Par exemple :
$ ps -F
11) Afficher tous les processus au format hiérarchique ASCII
Pour illustrer, en supposant que vous souhaitiez afficher tous les processus sur votre système Linux au format de hiérarchie de processus d'art ASCII, exécutons :
$ ps af
La sortie sera au format "forêt":
12) Afficher le processus dans la sortie élargie
Si vous souhaitez élargir la sortie lors de l'exécution de la commande ps, utilisez w
choix :
$ ps w
Faisons une comparaison entre les sorties de l'exécution de 'ps w' et 'ps' :
13) Processus d'affichage selon le format défini par l'utilisateur
Vous pouvez utiliser la syntaxe suivante pour afficher dans un format défini par l'utilisateur :
Syntax:
$ ps --format column_name
$ ps -o column_name
$ ps o column_name
For example:
$ ps -e -o user,pid,cmd
14) Afficher les discussions avec l'ID de discussion
Par exemple, pour afficher les threads avec la colonne SPID (SPID est l'identifiant du thread), exécutez :
$ ps -aT
15) Afficher les informations sur les discussions
De plus, vous pouvez utiliser l'option '-L' pour obtenir des informations sur les threads de votre système Linux :
$ ps -aL
La sortie avec la colonne 'LWP' vous montre l'identifiant du thread :
Quelques exemples supplémentaires
01) Vérifiez quels processus utilisent le plus de RAM
La commande suivante affichera la plus grande partie de la mémoire en utilisant des processus, %MEM
dans la 1ère colonne, PID
dans la 2e colonne et la commande dans la 3e colonne pour tous les processus en cours d'exécution sur le système :
$ ps -eo pmem,pid,cmd | sort -k 1 -nr
02) Affiche tous les threads d'un identifiant de processus spécifique
Cela affichera tous les threads d'un pid de processus particulier.
$ ps -Lf -p 3482
03) Affiche l'enfant d'un processus parent
Cela affichera tous les processus enfants d'un processus et est utile pour découvrir quels processus ont été dérivés de ce processus principal.
$ ps -o pid,pcpu,pmem,uname,comm -C apache2
04) Affiche la durée d'exécution du processus
La commande suivante indiquera depuis combien de temps le processus 'mysql' est exécuté sur le système :
$ ps -e -o pid,comm,etime | grep mysql
3107 mysqld_safe 18-07:01:53
3469 mysqld 18-07:01:52
etime
:temps écoulé depuis le démarrage du processus, sous la forme [[DD-]hh:]mm:ss.etimes
:temps écoulé depuis le démarrage du processus, en secondes.
05) Obtenir des informations de sécurité
Si nous voulons voir qui est actuellement connecté à votre serveur, nous pouvons le voir en utilisant la commande ps :
$ ps -eo pid,user,args
Vous pouvez maintenant mapper les pids sur leurs unités systemd respectives avec la commande ci-dessous :
$ ps -e -o pid,unit,cmd
Conclusion
Le pstree (ou utilisez ps -axjf ) et pgrep sont des commandes supplémentaires qui peuvent aider à obtenir des informations sur le processus en cours d'exécution.
Vous pouvez utiliser ps comme moniteur en temps réel à l'aide de la commande watch, par exemple, nous voulons filtrer les processus par CPU et le rapport d'utilisation de la mémoire est mis à jour toutes les 1 seconde.
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’
Dans ce didacticiel, nous avons appris de nombreuses façons d'utiliser la commande ps sous Linux. Pour explorer toutes les options, veuillez consulter la page de manuel ps. Merci d'avoir lu et s'il vous plaît laissez votre suggestion dans la section des commentaires ci-dessous.