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 sortieMatch 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
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 ?
- Efficacité: pgrep interroge directement les informations de processus du noyau, ce qui le rend plus efficace que ps | grep
- Sécurité: pgrep ne correspond pas à son propre processus, tandis que ps | grep peut correspondre au processus grep lui-même
- 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 :
- Le nom du processus est mal orthographié
- Ne pas utiliser l'
-foption pour faire correspondre la ligne de commande complète - Le processus appartient à un autre utilisateur et vous n'avez pas les autorisations suffisantes pour le voir
- 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
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
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
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 :
- Localisez rapidement et précisément des processus spécifiques
- Écrivez des scripts d'administration système plus fiables
- 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.
Autres extensions