Commande Linux pgrep

Guide complet des commandes Linux


pgrep est un outil de recherche de processus très pratique dans les systèmes Linux, et il fait partie du paquet procps ou procps-ng. Le nom de cette commande vient de « process grep ». Comme son nom l'indique, il peut rechercher des processus dans le système tout comme la commande grep recherche du texte.

La fonction principale de pgrep est de trouver les processus en cours d'exécution en fonction de conditions données et de renvoyer les PID (identifiants de processus) de ces processus. Par rapport à l'approche traditionnelle consistant à combiner la commande ps avec grep, pgrep est plus concis et efficace.


Syntaxe de base de pgrep

Le format de syntaxe de base de la commande pgrep est le suivant :

pgrep [选项] [匹配模式]

Où :

  • Options: diverses options utilisées pour spécifier des conditions de recherche ou le format de sortie
  • Match Mode: modèle d'expression régulière utilisé pour correspondre aux noms de processus

Options courantes

pgrep propose plusieurs options pour contrôler précisément le comportement de recherche. Voici les options courantes :

Option Description
-l Afficher à la fois le nom du processus et le PID
-a Afficher la ligne de commande complète, pas seulement le nom du processus
-f Faire correspondre la ligne de commande complète (y compris les arguments), pas seulement le nom du processus
-u Ne faire correspondre que les processus appartenant à l'utilisateur spécifié
-x Faire correspondre exactement le nom entier du processus
-n Afficher uniquement le processus correspondant le plus récent (démarré le plus récemment)
-o Afficher uniquement le processus correspondant le plus ancien (démarré le plus tôt)
-c Renvoyer uniquement le nombre de processus correspondants sans afficher les PID
-d Spécifier le délimiteur de sortie (par défaut : saut de ligne)
-P Faire correspondre uniquement les processus enfants de l'ID de processus parent spécifié
-g Faire correspondre uniquement les processus ayant l'ID de groupe de processus spécifié
-t Faire correspondre uniquement les processus sur le terminal spécifié (tty)

Exemples d'utilisation

Recherche de processus de base

Trouver tous les processus nommés "nginx" :

pgrep nginx

Cette commande renvoie les ID de processus de tous les processus dont le nom contient "nginx".

Afficher le nom du processus

Trouver le processus "ssh" et afficher son nom de processus :

pgrep -l ssh

Exemple de sortie :

1234 sshd
5678 ssh-agent

Correspondance exacte du nom de processus

Faire correspondre uniquement les processus nommés exactement "bash" (en excluant "bashrc" et similaires) :

pgrep -x bash

Correspondre à la ligne de commande complète

Trouver les processus contenant des arguments spécifiques, par exemple, trouver les processus sshd utilisant un port spécifique :

pgrep -f "sshd -p 2222"

Filtrer par utilisateur

Trouver tous les processus exécutés par l'utilisateur "www-data" :

pgrep -u www-data

Recherche avec conditions combinées

Trouver les processus nommés "mysqld" exécutés par l'utilisateur "mysql" :

pgrep -u mysql mysqld

Compter les processus

Compter le nombre de processus "chrome" en cours d'exécution :

pgrep -c chrome

Trouver le processus le plus récent/le plus ancien

Trouver le processus "python" le plus récemment démarré :

pgrep -n python

Trouver le processus "python" démarré le plus tôt :

pgrep -o python

Utilisation avancée

Utilisation avec pkill

pgrep est souvent utilisé conjointement avec la commande pkill. Vous pouvez d'abord utiliser pgrep pour afficher les processus à terminer, puis, après avoir confirmé qu'ils sont corrects, utiliser pkill :

Exemple

# Afficher d'abord les processus correspondants
pgrep -l apache2

# Terminer ces processus après confirmation
pkill apache2

Délimiteur personnalisé

Par défaut, pgrep utilise des retours à la ligne pour séparer plusieurs PID. Vous pouvez le modifier pour qu'il utilise des virgules :

pgrep -d, nginx

Exemple de sortie :

1234,5678,9012

Trouver des processus sur un terminal spécifique

Trouver tous les processus en cours d'exécution sur le terminal tty1 :

pgrep -t tty1

Trouver les processus enfants

Trouver tous les processus enfants du processus avec le PID 1234 :

pgrep -P 1234

FAQ

Quelle est la différence entre pgrep et ps | grep ?

  1. Efficacité: pgrep interroge directement les informations de processus du noyau, ce qui le rend plus efficace que ps | grep
  2. Sécurité: pgrep ne correspond pas à son propre processus, tandis que ps | grep peut correspondre au processus grep lui-même
  3. Fonctionnalités: pgrep offre des options de recherche de processus plus spécialisées

Pourquoi pgrep ne parvient-il parfois pas à trouver un processus que je sais en cours d'exécution ?

Raisons possibles :

  1. Le nom du processus est mal orthographié
  2. Ne pas utiliser l'-foption pour faire correspondre la ligne de commande complète
  3. Le processus appartient à un autre utilisateur et vous n'avez pas les autorisations suffisantes pour le voir
  4. Le processus est déjà terminé

Comment vérifier la version de pgrep ?

pgrep -V

Cas d'utilisation pratiques

Surveiller l'état du service

Vérifier si un service est en cours d'exécution dans un script :

Exemple

if pgrep -x "nginx" >/dev/null; puis
    echo "Nginx est en cours d'exécution"
else
    echo "Nginx n'est pas en cours d'exécution"
fi

Opérations par lots sur les processus

Obtenir les PID de tous les processus Java et effectuer des opérations :

Exemple

for pid in $(pgrep java); do
    echo "Traitement du processus Java $pid"
    # Autres opérations...
done

Surveillance des ressources système

Compter le nombre et l'utilisation des ressources de types spécifiques de processus :

Exemple

count=$(pgrep -c chrome)
memory=$(ps -o rss= -p $(pgrep chrome) | awk '{sum+=$1} END {print sum}')
echo "Processus Chrome : $count, Mémoire totale : ${memory}KB"

Résumé

pgrep est un outil puissant et efficace dans l'administration système Linux. Il simplifie les opérations de recherche et de gestion des processus. En maîtrisant les différentes options et utilisations de pgrep, vous pouvez :

  1. Localisez rapidement et précisément des processus spécifiques
  2. Écrivez des scripts d'administration système plus fiables
  3. Améliorez l'efficacité du travail quotidien de maintenance du système

N'oubliez pas, après avoir utilisé pgrep pour trouver des processus, en particulier lorsque vous vous préparez à terminer des processus, confirmez toujours que les processus trouvés sont les bons afin d'éviter d'arrêter accidentellement des services importants.


Guide complet des commandes Linux

Autres extensions