Uso do pgrep / pidof para nomes de processos complexos?

11

Estou tentando usar o pidof ou o pgrep para poder enviar um HUP para um processo no meu sistema. O problema é que eu só quero matar o processo com um parâmetro preciso.

Esta é a saída de 'ps awx'

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

Ao fazer um destes:

pidof processname 
pgrep processname

Você obtém a lista de todos os processos iniciando pelo nome do processo, mas eu gostaria de fazer algo como:

pidof processname test
pgrep processname test

Para recuperar apenas o PID necessário (neste exemplo seria 659)

ATUALIZAR

Ao usar o sinalizador -f no pgrep, basta fazer o que eu queria, fazendo:

pgrep -f "processname test"

Você obterá a resposta certa.

aseques
fonte
Certo, você geralmente precisa -fporque deseja corresponder na linha de comando completa. Observe que o pgrep opera com expressões regulares, para que você possa fazer uma correspondência relativamente complexa também.
cjc 15/05

Respostas:

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
fonte