2011-11-14 11 views
82

Chcę użyć ps -ef | grep "keyword" do określenia pid procesu demona (w wyjściu ps -ef znajduje się unikalny ciąg znaków).PID z ps -ef | grep słowo kluczowe

Mogę zabić proces z pkill keyword czy jest jakieś polecenie, które zwraca pid zamiast go zabić? (Pidof lub pgrep doesnt work)

Odpowiedz

175

Możesz można użyć pgrep tak długo, jak uwzględnić opcje -f. To sprawia, że ​​pgrep dopasowuje słowa kluczowe do całego polecenia (łącznie z argumentami) zamiast tylko nazwy procesu.

pgrep -f keyword 

Z man page:

-f       Wzór jest normalnie tylko dopasowywane do nazwy procesu. Po ustawieniu -f używana jest pełna linia poleceń.


Jeśli naprawdę chcesz uniknąć pgrep, spróbuj:

ps -ef | awk '/[k]eyword/{print $2}' 

zanotować [] wokół pierwszej litery słowa kluczowego. Jest to przydatna sztuczka, aby uniknąć dopasowania samej komendy awk.

+1

dzięki :) Trochę nowość dla Linuksa to -f działa: P –

+1

Nie ma za co Dennis. –

+3

ps jest nadużywany, a pgrep jest tak niedostatecznie wykorzystany. Dzięki za post. –

38

Spróbuj

ps -ef | grep "KEYWORD" | awk '{print $2}'

polecenie to powinno dać PID procesów ze słów kluczowych w nich. W tym przypadku awk zwraca wartość znajdującą się w drugiej kolumnie z danych wyjściowych.

+1

Ponieważ to może zwrócić więcej niż jeden pid, możesz uzyskać pierwszy, dodając '| głowa -1'. – Kris

5

ta jest dostępna w systemie Linux: pidof hasła

8

ps -ef | grep KEYWORD | grep -v grep | awk '{print $2}'

+4

Być może literówka? ps -ef | grep KEYWORD | grep -v grep | awk '{print $ 2}' – rmv

+0

Czy wiesz, jak przekazać zwrócony PID do "kill -9"?! – alybadawy

+0

@alybadawy po prostu dodaj '| xargs zabija -9' do końca – patte8

6

używam

ps -C "keyword" -o pid= 

Polecenie to powinno dać ci numer PID.