Использование pgrep / pidof для сложных имен процессов?

11

Я пытаюсь использовать pidof или pgrep, чтобы иметь возможность отправить HUP процессу в моей системе. Проблема в том, что я хочу убить процесс только с точным параметром.

Это вывод «PS AWX»

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

Делая одно из них:

pidof processname 
pgrep processname

Вы получаете список всех процессов, начинающихся с имени процесса, но я хотел бы сделать что-то вроде:

pidof processname test
pgrep processname test

Чтобы получить только тот PID, который мне нужен (в этом примере это будет 659)

ОБНОВИТЬ

Используя флаг -f на pgrep, я просто делаю то, что хотел:

pgrep -f "processname test"

Вы получите правильный ответ.

aseques
источник
Правильно, как правило, вам нужно, -fпотому что вы хотите найти соответствие в полной командной строке. Обратите внимание, что pgrep работает с регулярными выражениями, поэтому вы также можете выполнять сравнительно сложные сопоставления.
CJC

Ответы:

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
источник