Utilisation de pgrep / pidof pour les noms de processus complexes?


11

J'essaie d'utiliser pidof ou pgrep pour pouvoir envoyer un HUP à un processus dans mon système. Le problème est que je veux seulement tuer le processus avec un paramètre précis.

Ceci est la sortie de 'ps awx'

  657 ?        S      0:00 processname software
  658 ?        S      0:00 processname demo
  659 ?        S      0:00 processname test

En faisant l'une de ces actions:

pidof processname 
pgrep processname

Vous obtenez la liste de tous les processus commençant par nom de processus, mais je voudrais faire quelque chose comme:

pidof processname test
pgrep processname test

Pour récupérer uniquement le PID dont j'ai besoin (dans cet exemple, ce serait 659)

MISE À JOUR

En utilisant le drapeau -f sur pgrep fait juste ce que je voulais, en faisant:

pgrep -f "processname test"

Vous obtiendrez la bonne réponse.


Bon, vous avez généralement besoin -fparce que vous voulez faire correspondre sur la ligne de commande complète. Notez que pgrep fonctionne sur les expressions régulières, vous pouvez donc également effectuer des correspondances relativement complexes.
— cjc

Réponses:


10
$ ps aux |grep [d]evio
user01   10220  0.0  0.1   5376  2424 pts/5    S+   11:41   0:00 ssh devio
$ pgrep -f "ssh devio"
10220
$ pkill -0 -f "ssh devio" ; echo $?
0
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.