Comment utiliser la commande ps pour surveiller les processus Linux

Obtenez un aperçu des processus en cours d’exécution sur votre ordinateur Linux avec la commande ps. Localisez les processus par nom, utilisateur ou même terminal avec autant ou aussi peu de détails que nécessaire. Nous vous montrons comment.

Gestion des processus sous Linux

Le noyau est le cœur battant de tous les systèmes d’exploitation de type Linux et Unix. Parmi ses nombreuses responsabilités figure l’allocation de ressources système telles que la RAM et le temps CPU. Celles-ci doivent être jonglées en temps réel pour que tous les processus en cours aient leur juste part, en fonction de la priorité de chaque tâche.

Parfois, les tâches peuvent se bloquer, entrer dans une boucle serrée ou ne plus répondre pour d’autres raisons. Ou ils peuvent continuer à fonctionner, mais engloutir trop de temps CPU ou de RAM, ou se comporter d’une manière tout aussi antisociale. Parfois, les tâches doivent être tuées par pitié pour toutes les personnes impliquées. Le premier pas. Bien entendu, il s’agit d’identifier le processus en question.

Mais peut-être que vous n’avez aucun problème de tâche ou de performance. Peut-être que vous êtes simplement curieux de savoir quels processus sont en cours d’exécution à l’intérieur de votre ordinateur et que vous aimeriez jeter un coup d’œil sous le capot. La commande ps répond à ces deux besoins. Ça te donne un aperçu de ce qui se passe à l’intérieur de votre ordinateur « maintenant. »

ps est suffisamment flexible pour vous donner précisément les informations dont vous avez besoin dans le format que vous souhaitez. En fait, ps a de nombreuses options. Les options décrites ici répondront aux besoins les plus courants. Si vous avez besoin d’aller plus loin dans ps que nous l’avons vu dans cet article, vous constaterez que notre introduction facilite la digestion de la page de manuel.

Processus de liste

Le moyen le plus simple d’utiliser ps est de le lancer sans paramètres:

ps

ps dans une fenêtre de terminal

ps affiche une liste des processus lancés par l’utilisateur qui a exécuté la commande.

sortie de ps dans une fenêtre de terminal

Les quatre colonnes sont:

PID: numéro d’identification de processus du processus.
TTY: nom de la console à laquelle l’utilisateur est connecté.
TIME: La quantité de temps de traitement CPU que le processus a utilisé.
CMD: le nom de la commande qui a lancé le processus

Processus de liste pour tous les utilisateurs

en ajoutant -e (sélectionnez tous les processus), nous pouvons faire en sorte que ps répertorie les processus qui ont été lancés par tous les utilisateurs, pas seulement par l’utilisateur qui exécute la commande ps. Parce que cela va être une longue liste, nous en faisons moins.

ps -e | less

ps -e | moins dans une fenêtre de terminal

La liste des processus est dirigée vers less.

  Comment mettre à niveau vers Ubuntu 20.04 LTS

La sortie de ps -e redirigée vers less dans une fenêtre de terminal

Nous avons beaucoup plus d’entrées dans la liste, mais nous voyons les mêmes quatre colonnes qu’avant. Les entrées avec un point d’interrogation? dans la colonne TTY n’ont pas été démarrés à partir d’une fenêtre de terminal.

Affichage de la hiérarchie des processus

Parfois, cela peut aider à résoudre un problème ou à identifier un processus particulier si vous pouvez voir quels processus ont lancé d’autres processus. Nous utilisons l’option -H (hiérarchie) pour ce faire.

ps -eH | less

ps -eH | moins dans une fenêtre de terminal

L’indentation indique quels processus sont les parents de quels autres processus.

sortie de ps -eH dans un less dans une fenêtre de terminal

Pour ajouter un peu plus de clarté, nous pouvons demander à ps d’en ajouter ASCII lignes et dessiner la hiérarchie sous forme d’arbre. L’option pour ce faire est l’option –forest.

ps -eH --forest | less

ps -eH --forest | moins dans une fenêtre de terminal

Cela facilite le suivi des processus qui sont les parents d’autres processus.

sortie de ps -eH --forest redirigée vers less dans une fenêtre de terminal

Liste des processus par nom

Vous pouvez diriger la sortie de ps via grep vers des entrées de liste dont les noms correspondent au terme de recherche. Ici, nous recherchons les entrées qui correspondent au terme de recherche « firefox »:

ps -e | grep firefox

ps -e | grep firefox dans une fenêtre de terminal

Dans ce cas, la sortie est une seule entrée pour le processus qui nous intéresse. Bien sûr, si nous avions lancé plusieurs instances de Firefox, il y aurait plus d’un élément retourné dans la liste.

sortie de ps -e | grep firefox dans une fenêtre de terminal

Affichage de plus de colonnes dans la sortie

Pour ajouter plus de colonnes à la sortie, utilisez l’option -f (plein format).

ps -ef | less

ps -ef | moins dans une fenêtre de terminal

Un ensemble supplémentaire de colonnes est inclus dans la sortie de ps.

sortie de ps -ef | moins dans une fenêtre de terminal

Les colonnes sont:

UID: ID utilisateur du propriétaire de ce processus.
PID: ID de processus du processus.
PPID: ID de processus parent du processus.
C: Le nombre d’enfants du processus.
STIME: Heure de début. L’heure à laquelle le processus a commencé.
TTY: nom de la console à laquelle l’utilisateur est connecté.
TIME: La quantité de temps de traitement CPU que le processus a utilisé.
CMD: nom de la commande qui a lancé le processus.

En utilisant l’option -F (extra full-format), nous pouvons obtenir encore plus de colonnes:

ps -eF | less

ps -eF | moins dans une fenêtre de terminal

Les colonnes que nous obtenons cette fois nécessitent un défilement latéral de l’écran pour toutes les révéler.

sortie de ps -eF | moins dans une fenêtre de terminal, côté gauche de l'écran

Appuyez sur la touche «Flèche droite» pour déplacer l’affichage vers la gauche.

sortie de ps -eF | moins dans une fenêtre de terminal, côté droit de l'écran

Les colonnes que nous obtenons maintenant sont:

UID: ID utilisateur du propriétaire de ce processus.
PID: ID de processus du processus.
PPID: ID de processus parent du processus.
C: Le nombre d’enfants du processus.
SZ: taille en pages RAM de la mémoire image.
RSS: taille de l’ensemble des résidents. Il s’agit de la mémoire physique non permutée utilisée par le processus.
PSR: processeur auquel le processus est affecté.
STIME: Heure de début. L’heure à laquelle le processus a commencé.
TTY: nom de la console à laquelle l’utilisateur est connecté.
TIME: La quantité de temps de traitement CPU que le processus a utilisé.
CMD: nom de la commande qui a lancé le processus.

  Partagez l'écran de votre PC avec n'importe quel ordinateur via WiFi ou LAN à l'aide de ScreenTask

Liste des processus par ID de processus

Une fois que vous avez trouvé l’ID de processus pour le processus qui vous intéresse, vous pouvez l’utiliser avec la commande ps pour répertorier les détails de ce processus. Utilisez l’option -p (sélectionner par ID de processus) pour y parvenir:

ps -p 3403

ps -p 3403 dans une fenêtre de terminal

Les détails de ce processus sont répertoriés:

Sortie de ps -p 3403 dans une fenêtre de terminal

Vous n’êtes pas limité à un seul ID de processus. Vous pouvez fournir une liste d’ID de processus, séparés par des espaces.

Liste des processus par commande

L’option -C (commande) vous permet de rechercher un processus en utilisant le nom de la commande. Autrement dit, le nom de la commande qui a lancé le processus. Ceci est légèrement différent de la ligne de commande, qui peut inclure des noms de chemin et des paramètres ou des options.

ps -C shutter

obturateur ps -C dans une fenêtre de terminal

Les détails du processus d’obturation sont répertoriés.

Liste des processus appartenant à un utilisateur

Pour voir les processus appartenant à un utilisateur particulier, utilisez l’option -u (liste d’utilisateurs):

ps -u mary

ps -u mary dans une fenêtre de terminal

Les processus appartenant au compte utilisateur mary sont affichés.

Sortie de ps -u mary dans une fenêtre de terminal

Liste des processus par terminal

Pour voir les processus associés à un TTY, utilisez l’option -t (sélection par TTY). Utilisée sans numéro TTY, l’option -t rapporte les processus associés à la fenêtre de terminal actuelle.

tty
ps -t

ps -t dans une fenêtre de terminal

La commande tty signale qu’il s’agit du pseudo-télétype 0. Les processus répertoriés par ps -t sont tous associés à TTY pts / 0.

Si nous transmettons un numéro TTY sur la ligne de commande, nous devrions obtenir un rapport des processus associés à ce TTY.

ps -t 1

ps -t 1 dans une fenêtre de terminal

Cette fois, les processus sont tous associés à TTY pts / 1.

Sélection des colonnes à afficher

Avec l’option -o (format), vous pouvez sélectionner les colonnes que vous souhaitez inclure dans la sortie de ps. Vous spécifiez les colonnes par nom. La (longue) liste des noms de colonnes est visible sur le page de manuel dans la section intitulée «Spécificateurs de format standard». Dans cet exemple, nous choisissons d’inclure le temps CPU (pcpu) et la ligne de commande avec les arguments (args) inclus dans la sortie.

ps -e -o pcpu,args | less

ps -e -o pcpu, args | moins dans une fenêtre de terminal

La sortie inclut uniquement nos deux colonnes demandées.

sortie de ps -e -o pcpu, args | moins dans une fenêtre de terminal

Tri de la sortie par colonnes

Vous pouvez faire trier la sortie pour vous en utilisant l’option –sort. Trions la sortie par la colonne CPU:

ps -e -o pcpu,args --sort -pcpu| less

ps -e -o pcpu, args --sort -pcpu | moins dans une fenêtre de terminal

Le trait d’union «-» sur le paramètre de tri pcpu donne un ordre de tri décroissant.

Sortie de ps triée par cpu dans une fenêtre de terminal

Pour voir les dix processus les plus gourmands en ressources processeur, dirigez la sortie par la tête commander:

ps -e -o pcpu,args --sort -pcpu | head -10

ps -e -o pcpu, args --sort -pcpu | tête 10 dans une fenêtre de terminal

Nous obtenons une liste triée et tronquée.

sortie de ps -e -o pcpu, args --sort -pcpu | tête 10 dans une fenêtre de terminal

Si nous ajoutons plus de colonnes à notre affichage, nous pouvons trier par plus de colonnes. Ajoutons la colonne pmem. Il s’agit du pourcentage de mémoire de l’ordinateur utilisé par le processus. Sans trait d’union, ou avec un signe «+» plus, l’ordre de tri est croissant.

ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10

ps -e -o pcpu, pmem, args --sort -pcpu, pmem | tête 10 dans une fenêtre de terminal

Nous obtenons notre colonne supplémentaire, et la nouvelle colonne est incluse dans le tri. La première colonne est triée avant la deuxième colonne et la deuxième colonne est triée par ordre croissant car nous n’avons pas mis de trait d’union sur pmem.

  Comment collaborer sur une playlist YouTube Music

Sortie de ps -e -o pcpu, pmem, args --sort -pcpu, pmem | tête 10 dans une fenêtre de terminal

Rendons-le un peu plus utile et ajoutons-y la colonne ID de processus (pid) afin que nous puissions voir le numéro de processus de chaque processus dans notre liste.

ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10

ps -e -o pid, pcpu, pmem, args --sort -pcpu, pmem | tête 10 dans une fenêtre de terminal

Nous pouvons maintenant identifier les processus.

Sortie de ps -e -o pid, pcpu, pmem, args --sort -pcpu, pmem | tête 10

Tuer des processus par ID de processus

Nous avons couvert une gamme de façons d’identifier les processus, y compris le nom, la commande, l’utilisateur et le terminal. Nous avons également couvert des moyens d’identifier les processus par leurs attributs dynamiques, tels que l’utilisation du processeur et la mémoire.

Ainsi, d’une manière ou d’une autre, nous pouvons identifier les processus en cours d’exécution. En connaissant leur ID de processus, nous pouvons (si nécessaire) tuer n’importe lequel de ces processus en utilisant la commande kill. Si nous voulions tuer le processus 898, nous utiliserions ce format:

sudo kill 898

sudo kill 898 dans une fenêtre de terminal

Si tout se passe bien, le processus se termine en silence.

sortie de sudo kill 898 dans une fenêtre de terminal

Tuer les processus par nom

La commande pkill vous permet de tuer les processus par nom. Assurez-vous d’avoir identifié le bon processus! Cette commande mettra fin au processus supérieur.

sudo pkill top

sudo pkill top dans une fenêtre de terminal

Encore une fois, aucune nouvelle n’est une bonne nouvelle. Le processus est arrêté en silence.

sortie de sudo pkill top dans une fenêtre de terminal

Tuer plusieurs processus par nom

Si vous avez plusieurs copies d’un processus en cours d’exécution ou si un processus a engendré un certain nombre de processus enfants (comme Google Chrome peut le faire), comment pouvez-vous les éliminer? C’est tout aussi simple. Nous utilisons la commande killall.

Nous avons deux copies du top en cours d’exécution:

ps -e | grep top

ps -e | grep top dans une fenêtre de terminal

Nous pouvons terminer tous les deux avec cette commande:

sudo killall top

sudo killall top dans une fenêtre de terminal

Aucune réponse signifie aucun problème, donc ces deux processus ont été interrompus.

sortie de sudo killall top dans une fenêtre termonale

Obtenez une vue dynamique avec top

La sortie de ps est une vue instantanée. Il ne se met pas à jour. Pour obtenir une vue actualisée des processus, utilisez la commande top. Il fournit un vue dynamique des processus exécutés sur votre ordinateur. L’affichage est en deux parties. Il y a une zone de tableau de bord en haut de l’écran composée de lignes de texte, et un tableau dans la partie inférieure de l’écran composé de colonnes.

Commencez en haut avec cette commande:

top

la commande supérieure exécutée dans une fenêtre de terminal

Les colonnes contiennent des informations sur les processus:

PID: ID de processus
USER: Nom du propriétaire du processus
PR: priorité du processus
NI: La belle valeur du processus
VIRT: mémoire virtuelle utilisée par le processus
RES: mémoire résidente utilisée par le processus
SHR: mémoire partagée utilisée par le processus
S: état du processus. Consultez la liste ci-dessous des valeurs que ce champ peut prendre
% CPU: la part de temps CPU utilisée par le processus depuis la dernière mise à jour
% MEM: part de mémoire physique utilisée
TIME +: temps CPU total utilisé par la tâche en centièmes de seconde
COMMANDE: nom de la commande ou ligne de commande (nom et paramètres de ligne de commande) Si la colonne de commande n’est pas visible, appuyez sur la touche «Flèche droite».

Le statut du processus peut être l’un des suivants:

D: sommeil ininterrompu
R: Courir
S: dormir
T: Tracé (arrêté)
Z: Zombie

Appuyez sur la touche «Q» pour sortir du haut.

Avant de tuer un processus

Assurez-vous que c’est celui que vous recherchez et vérifiez que cela ne vous posera aucun problème. En particulier, il vaut la peine de vérifier avec les options -H (hiérarchie) et –forest pour s’assurer qu’il ne contient aucun processus enfant important que vous auriez oublié.