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.
Table des matières
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 affiche une liste des processus lancés par l’utilisateur qui a exécuté la commande.
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
La liste des processus est dirigée vers less.
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
L’indentation indique quels processus sont les parents de quels autres processus.
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
Cela facilite le suivi des processus qui sont les parents d’autres processus.
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
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.
Affichage de plus de colonnes dans la sortie
Pour ajouter plus de colonnes à la sortie, utilisez l’option -f (plein format).
ps -ef | less
Un ensemble supplémentaire de colonnes est inclus dans la sortie de ps.
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
Les colonnes que nous obtenons cette fois nécessitent un défilement latéral de l’écran pour toutes les révéler.
Appuyez sur la touche «Flèche droite» pour déplacer l’affichage vers la gauche.
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.
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
Les détails de ce processus sont répertoriés:
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
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
Les processus appartenant au compte utilisateur mary sont affichés.
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
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
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
La sortie inclut uniquement nos deux colonnes demandées.
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
Le trait d’union «-» sur le paramètre de tri pcpu donne un ordre de tri décroissant.
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
Nous obtenons une liste triée et tronquée.
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
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.
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
Nous pouvons maintenant identifier les processus.
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
Si tout se passe bien, le processus se termine en silence.
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
Encore une fois, aucune nouvelle n’est une bonne nouvelle. Le processus est arrêté en silence.
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
Nous pouvons terminer tous les deux avec cette commande:
sudo killall top
Aucune réponse signifie aucun problème, donc ces deux processus ont été interrompus.
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
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é.