Użycie pgrep / pidof dla złożonych nazw procesów?

11

Próbuję użyć pidof lub pgrep, aby móc wysłać HUP do procesu w moim systemie. Problem polega na tym, że chcę zabić proces tylko z precyzyjnym parametrem.

To jest wynik działania „ps awx”

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

Wykonując jedną z tych czynności:

pidof processname 
pgrep processname

Otrzymasz listę wszystkich procesów zaczynających się od nazwy procesu, ale chciałbym zrobić coś takiego:

pidof processname test
pgrep processname test

Aby pobrać tylko PID, którego potrzebuję (w tym przykładzie byłoby 659)

AKTUALIZACJA

Używając flagi -f na pgrep robi to, co chciałem, wykonując:

pgrep -f "processname test"

Otrzymasz właściwą odpowiedź.

konsekwencje
źródło
Racja, na ogół potrzebujesz, -fponieważ chcesz dopasować w pełnym wierszu polecenia. Zauważ, że pgrep działa na wyrażeniach regularnych, więc możesz również wykonywać stosunkowo złożone dopasowanie.
cjc

Odpowiedzi:

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
źródło