¿Uso de pgrep / pidof para nombres de procesos complejos?

11

Estoy tratando de usar pidof o pgrep para poder enviar un HUP a un proceso en mi sistema. El problema es que solo quiero matar el proceso con un parámetro preciso.

Esta es la salida de 'ps awx'

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

Al hacer uno de estos:

pidof processname 
pgrep processname

Obtiene la lista de todos los procesos que comienzan por nombre de proceso, pero me gustaría hacer algo como:

pidof processname test
pgrep processname test

Para recuperar solo el PID que necesito (en este ejemplo sería 659)

ACTUALIZAR

Al usar la bandera -f en pgrep, solo hago lo que quería, haciendo:

pgrep -f "processname test"

Obtendrás la respuesta correcta.

aseques
fuente
Correcto, generalmente necesita -fporque quiere coincidir en la línea de comando completa. Tenga en cuenta que pgrep funciona con expresiones regulares, por lo que también puede hacer coincidencias relativamente complejas.
cjc

Respuestas:

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
jirib
fuente