Linux / Commande pgrep : trouver les PID par nom, utilisateur ou commande
pgrep recherche les processus correspondant à un nom et à d'autres critères, puis affiche leurs identifiants PID. Il n'envoie pas de signal et ne termine pas les processus. Par défaut, le motif est une expression régulière appliquée au nom ; l'option -f change la recherche pour examiner la ligne de commande complète.
Rechercher un nom et vérifier les résultats
pgrep [options] motif
Sur Linux avec procps-ng, une recherche simple affiche un PID par ligne :
pgrep sshd
Elle peut trouver plusieurs processus si plusieurs noms correspondent. Pour afficher le PID et la ligne de commande de chaque résultat :
pgrep -a sshd
Exemple illustratif si ce service fonctionne, avec un numéro qui variera sur votre système :
1234 /usr/sbin/sshd -D
-a enrichit l'affichage ; il ne transforme pas la recherche en recherche dans les arguments. Pour montrer seulement le PID et le nom court, utilisez -l. Une ligne de commande peut contenir des informations à retirer avant de partager le résultat.
Choisir entre nom exact et ligne de commande
La recherche simple sshd peut correspondre à un nom contenant cette suite de caractères. Pour demander que le nom entier corresponde au motif :
pgrep -x sshd
Les motifs restent des expressions régulières étendues, même avec -x. Mettez-les entre apostrophes s'ils contiennent des métacaractères afin que le shell ne les interprète pas. L'exemple suivant sélectionne les noms complets python ou python3 :
pgrep -x 'python(3)?'
Pour rechercher un script dans la ligne de commande complète et afficher cette ligne :
pgrep -af 'worker[.]py'
[.] désigne ici un point littéral dans l'expression régulière. Avec -f, un script, un argument ou une commande enveloppante contenant ce texte peut être sélectionné. Inspectez donc les résultats au lieu de supposer qu'un seul programme porte ce motif.
Le nom court utilisé par procps-ng est limité aux 15 caractères fournis par le champ concerné de /proc. Pour un long nom, chercher la ligne complète peut être nécessaire, mais élargit le périmètre. Avec -x -f, c'est la ligne de commande entière qui doit correspondre au motif, pas seulement le nom de l'exécutable.
Combiner utilisateur et autres critères
Remplacez alice par un compte existant. Cette commande exige à la fois le bon utilisateur effectif et le nom complet python3 :
pgrep -u alice -x python3
Les critères de types différents se combinent par un ET logique. L'option -u sélectionne l'identifiant utilisateur effectif ; -U sélectionne l'identifiant réel. Cette distinction peut compter pour un programme qui change d'identité.
| Option | Rôle |
|---|---|
-a |
Afficher le PID et la ligne complète. |
-x |
Faire correspondre tout le nom, ou toute la ligne avec -f. |
-f |
Rechercher dans la ligne complète plutôt que dans le nom court. |
-n |
Ne retenir que le processus correspondant démarré le plus récemment. |
-o |
Ne retenir que le processus correspondant démarré le plus anciennement. |
-n et -o ne désignent pas les plus gros ou les plus petits PID par définition : le critère est le moment de démarrage. Ils ne prouvent pas non plus que le processus choisi est l'instance de service que vous recherchiez.
Comprendre une recherche vide avant d'agir
Contrôlez le code de sortie immédiatement après la recherche :
pgrep -x sshd
printf 'Code de sortie : %s\n' "$?"
Dans pgrep de procps-ng, 0 indique au moins une correspondance et 1 aucune correspondance. Le code 2 indique une erreur de syntaxe et 3 une erreur fatale. Un résultat vide peut aussi refléter un motif inadapté, une sélection trop étroite ou la visibilité du contexte courant ; il ne suffit pas à diagnostiquer la santé d'un service.
Pgrep n'inclut pas son propre processus dans les résultats. Un processus parent ou un autre outil dont les arguments correspondent à une recherche -f peut toutefois apparaître. C'est une raison supplémentaire de lire les lignes trouvées.
Avant d'envoyer un signal, vérifiez de nouveau le PID et la commande avec ps et une sélection par PID. Le processus peut avoir fini depuis la recherche, et un numéro peut être réutilisé. Ne reliez pas automatiquement une recherche large à une action de terminaison sans confirmer les cibles.
La page de manuel pgrep de procps-ng décrit les expressions, critères et codes de sortie. Consultez man pgrep pour les options de votre version installée.




