Comment trouver le PID d’un processus Linux à l’aide de pidof ou pgrep

fatmawati achmad zaenuri/Shutterstock.com

Pour trouver l’ID de processus d’un processus Linux, utilisez la commande pidof, comme ceci : “pidof examplename”. Si vous ne connaissez qu’une partie du nom du PID, vous pouvez utiliser “pgrep examplenamefragment” à la place. Remplacez “examplename” et “examplenamefragment” par les termes que vous souhaitez rechercher.

Travailler avec un processus Linux signifie souvent connaître son ID de processus, ou PID. Il s’agit d’un numéro unique attribué à chaque logiciel en cours d’exécution. Voici deux façons de savoir de quoi il s’agit.

Qu’est-ce qu’un ID de processus Linux ?

En interne, Linux garde une trace de ses processus en cours d’exécution en leur attribuant un numéro d’identification unique, appelé ID de processus ou PID. Chaque application, utilitaire et démon en cours d’exécution a un PID.

Les PID sont de simples valeurs entières. Un processus nouvellement démarré recevra un PID supérieur au dernier PID donné. Ainsi, le processus avec le PID le plus élevé est le processus le plus récent, c’est-à-dire le plus récemment lancé. Cela continue jusqu’à ce que le système atteigne la valeur maximale pour un PID.

La limite supérieure pour un PID est 32768. Une fois ce chiffre atteint, Linux revient au début et recherche un PID qui est devenu libre parce que le processus qui le possédait auparavant s’est terminé.

Le processus avec un PID de 1 est le premier processus lancé lorsque Linux est lancé par les processus de démarrage. Dans les systèmes basés sur systemd qui seraient systemd . Dans d’autres systèmes, c’est probablement initbien que certaines distributions Linux utilisent des alternatives telles que OpenRc ou s6.

Parfois, il est utile de découvrir le PID d’un processus, généralement parce que vous souhaitez effectuer une action sur ce processus. Voici deux façons différentes de trouver le PID d’un processus lorsque vous connaissez le Nom du processus.

EN RELATION: Que sont les PID Unix et comment fonctionnent-ils ?

Comment obtenir un PID Linux à l’aide de la commande pidof

La pidof La commande peut être considérée comme une combinaison de “PID” et “ng”. C’est comme demander quel est le PID de ce processus ? Si nous utilisons la commande sans paramètres, cela ne fera rien. Il revient silencieusement à l’invite de commande. Nous devons spécifier un nom de processus.

pidof bash

Trouver le PID d'un shell bash à l'aide de la commande pidof

pidof nous indique que le PID du shell Bash est 8304. Nous pouvons vérifier cela avec le ps ordre Tout ce que nous avons à faire est d’appeler ps sans paramètres. Il rendra compte des processus en cours d’exécution dans la session en cours.

ps

lister les processus à l'aide de la commande ps

car ps rend compte de tous les processus qu’il peut trouver, qui inclura lui-même, il nous dit qu’il y a un bash processus et un ps le processus est en cours d’exécution. Comme on s’y attendait, le bash le processus a le même PID pidof rapporté.

Si plusieurs fenêtres de terminal sont ouvertes, pidof rendra compte à chacun d’eux.

pidof bash

pidof signale certaines instances de processus correspondants

Notez que les PID sont répertoriés du plus élevé au plus bas ou, en d’autres termes, du plus récent au plus ancien.

Ce que cela ne montre pas, c’est que vous n’êtes peut-être pas le propriétaire de tous ces processus. pidof trouve tous les processus avec des noms correspondants, quel que soit leur propriétaire. Examinons de plus près en canalisant la sortie grep. Nous utilisons le -e (sélectionner tous les processus) et le -f (liste complète) options avec ps .

ps -ef | grep bash

Utiliser ps et grep pour déterminer les propriétaires des processus bash

Deux des processus bash appartiennent à l’utilisateur dave, le troisième appartient à l’utilisateur mary.

Parfois, une application génère plusieurs processus, chacun recevant son propre PID. C’est ce que nous obtenons avec Google Chrome.

pidof chrome

pidof pour trouver plusieurs PID pour une seule application avec plusieurs processus

EN RELATION: Pourquoi Chrome a-t-il autant de processus ouverts ?

Par défaut, pidof rapports sur tous les processus. Si nous le voulons, nous pouvons demander uniquement le plus récent de ces processus. La -s (prise unique) fait cela.

pidof -s chrome

Recherche du dernier PID à partir de n applications avec plusieurs PID

Pour utiliser le kill commande pour tuer manuellement tous les chrome les processus seront fastidieux. Si nous obtenons la liste des processus dans une variable, nous pouvons passer cette variable à kill ordre La kill La commande peut accepter plusieurs PID dans sa commande, elle accepte donc volontiers notre entrée et tue tous les processus pour nous.

pid=$(pidof chrome)
echo $pid
kill $pid
pidof chrome

Passer une variable contenant plusieurs PID à la commande kill

La première commande collecte la sortie de pidof et affectez-le à notre variable, que nous avons nommée pid. Nous n’en avons pas besoin echo à l’écran, nous le faisons simplement pour montrer ce que contient notre variable.

On passe la variable à kill commande, puis utilisez pidof à nouveau pour vérifier s’il reste des processus Chrome. Ils ont tous été tués.

Une bizarrerie de pidof ne renverra pas le PID d’un script shell. Il renvoie le PID de bash shell qui exécute le script. Pour voir le shell exécuter un script, nous devons utiliser le -x (scénarios).

pidof -x sleep-loop.sh
ps -e | grep bash

Trouver le PID du shell bash exécutant le script shell

pidof renvoie le PID d’un shell bash, et ps nous montrant qu’il y a deux obus en cours d’exécution. L’un est le shell qui exécute le pidof commande, et l’autre est le shell qui exécute le script.

EN RELATION: Comment utiliser la commande grep sous Linux

Comment trouver des PID à l’aide de la commande pgrep sous Linux

La pgrep la commande fonctionne un peu pidof sur l’obtention des ID de processus sous Linux. Cependant, non seulement il trouve les processus qui correspondent exactement à l’indice de recherche, mais il renvoie également les PID de tous les processus portant le nom contient le texte de recherche.

Voici un exemple sur un ordinateur avec Firefox en cours d’exécution.

pgrep firefox
pgrep fire
pgrep fox
pgrep refo

Recherche Firefox PID à l'aide de différents indices de recherche

Toutes ces commandes trouvent le processus Firefox et renvoient le PID. Mais si vous entrez la commande :

pgrep refo

En soi, comment savez-vous si pgrep a trouvé FiRéfx et non, disons, un dameon appelé préformeMaryland?

Si vous ajoutez le -l (nom de la liste), pgrep listera le nom du processus à côté du PID.

pgrep refo -l

Utilisation de l'option -l pour transformer le nom du processus en une liste pgrep

S’il existe plusieurs instances d’un processus de correspondance, elles sont toutes répertoriées.

pgrep bash

Lister plusieurs PID avec pgrep

Notez qu’ils sont répertoriés dans l’ordre croissant, qui est l’ordre inverse de la sortie de pidof. Ils sont répertoriés du processus le plus ancien au processus le plus récent. Comme nous l’avons vu dans pidoftous les processus répertoriés ne vous appartiennent pas.

La -u (ID utilisateur) vous permet de rechercher des processus correspondant au texte de recherche et appartenant à l’utilisateur nommé.

pgrep bash -u dave

La liste bash de l'utilisateur dave traite les PID

Cette fois, nous voyons trois processus bash dans les résultats. L’un est utilisé par mary.

pgrep bash -u mary

Bash listant l'utilisateur mary traite les PID

Nous pouvons enchaîner les noms d’utilisateur sous forme de liste séparée par des virgules.

pgrep bash -u dave,mary -l

Liste des PID bash de deux utilisateurs

Et nous pouvons demander à voir tous les processus pour un utilisateur particulier.

pgrep -u dave -l

Répertorier tous les PID appartenant à un utilisateur donné

Pour voir la ligne de commande complète, utilisez le -a (liste complète).

pgrep -u dave -a

Utilisation de l'option -a pour répertorier l'intégralité de la ligne de commande de chaque processus

Un mot sur la propriété PID

Tous les processus système n’appartiennent pas à l’utilisateur root. Beaucoup, bien sûr, mais pas tous. Par exemple, cette commande fonctionne :

pgrep avahi-daemon

Mais cette commande a échoué.

pgrep -u root avahi-daemon

Il a échoué parce que root ce processus n’est pas détenu. Le véritable propriétaire est un utilisateur du système appelé “avahi”. Avec le bon nom d’utilisateur, la commande fonctionne.

pgrep -u avahi avahi-daemon

C’est un petit piège à surveiller.

Leave a Reply

Your email address will not be published. Required fields are marked *