pidof est plus précis que pgrep,

Post Reply
Message
Author
musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

pidof est plus précis que pgrep,

#1 Post by musher0 »

Bonjour.

Pelo va encore rouspéter que ce qui suit ne concerne que les développeurs, mais
que voulez-vous ! Ce type d'info a aussi sa place dans un forum tel que le nôtre.

Trouvé au hasard de mes travaux, mais ce peut être utile à plusieurs.

pidof et pgrep sont deux utilitaires qui renseignent sur les numéros d'identité des
processus. La différence est que pidof trouve le nom exact de l'exécutable, tandis
que pgrep trouve une suite de lettres dans le nom de l'exécutable.

Car pgrep est un grep. Et que fait grep ? Il trouve toutes les instances de « xyz »,
par exemple, dans un texte. Pour pgrep, la base de données des processus est
un texte, et il fonctionne dedans comme grep le ferait avec

Code: Select all

ps | grep xyz
Permettez que je vous donne un exemple :

Contexte --
La barre de tâches bmpanel2 est en fonction sur mon bureau, et en même temps,
je fais jouer un morceau de musique avec bmp.

Si je tape en terminal

Code: Select all

pgrep bmp
j'obtiens deux numéros de processus, celui de bmp et celui de bmpanel2.

Si je tape

Code: Select all

pidof bmp
j'obtiens seulement le numéro de processus de bmp.

Comme ni pgrep ni pidof n'aiffiche le nom de l'exécutable à côté du numéro de
processus, il peut y avoir confusion pour le développeur.

Il y a encore plus précis, que je vous laisse étudier :

Code: Select all

ps | awk '$4=="leafpad" && $NF ~ /texte1.txt/ { print $1 }'
Vous me suivez ? ;)
On obtient ainsi le numéro de processus exact pour l'instance de leafpad portant
le texte « texte1.txt ». Si vous avez d'ouverte une 2e instance de leafpad avec le
texte « texte2.txt », le numéro de processus de cette instance-là de leafpad
ne sera pas affiché.

Pour ceux qui ne connaissent ni awk ni ps :
ps affiche l'exécutable dans le 4e champ de la ligne et son numéro de processus
dans le 1er champ de la ligne;
$NF, dans le jargon de awk, désigne le dernier champ de la ligne, et ps affiche
l'élément traité par l'exécutable en dernier. (Sauf de rares exceptions.)

En français ordinaire, la ligne de code ci-dessus veut dire :
« Mon cher awk,

Peux-tu me dire s.t.p. le numéro de processus de l'exécutable leafpad
qui a chargé le texte "texte1.txt" ?

Merci.

musher0 »
Souvenons-nous que la politesse, à l'égard des programmes, c'est d'utiliser une
syntaxe correcte. :D

D'où cette petite note, qui, je l'espère, vous économisera du temps et vous évitera
peut-être quelques maux de tête ! :D

En résumé :
pour trouver le numéro de processus d'une tâche s'exécutant dans son ordinateur
-- si la précision n'a pas trop d'importance, utilisons < pgrep >;
-- si la précision a de l'importance, utilisons < pidof >;
-- si la précision est d'une extrême importance, utilisons la combinaison
___ < ps | awk > telle qu'expliquée ci-dessus.

À+
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#2 Post by musher0 »

Je me suis parlé tout seul.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

Pelo

T'as remarqué que je ne venais pas troubler ta réflexion

#3 Post by Pelo »

T'as remarqué que je ne venais pas troubler ta réflexion.

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

Re: T'as remarqué que je ne venais pas troubler ta réflexion

#4 Post by musher0 »

Pelo wrote:T'as remarqué que je ne venais pas troubler ta réflexion.
(T'as un côté comique, à tes heures ! ) :) Oui, j'aI remarqué !
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

Pelo

Certains ont un côté ronchon

#5 Post by Pelo »

Certains ont un côté ronchon,
Moi ce sont les variables qui m'intérresseraient bien, en linuxien.

Post Reply