Pobieranie pidów ze słowa kluczowego ps -ef | grep


111

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

Mogę zabić proces za pomocą czy pkill keywordjest jakieś polecenie, które zwraca pid zamiast go zabijać? (pidof lub pgrep nie działa)

Odpowiedzi:


231

Państwo może używać pgreptak długo, jak zawierać -fopcje. To sprawia, że pgrepdopasowujące słowa kluczowe w całym poleceniu (łącznie z argumentami) zamiast tylko nazwy procesu.

pgrep -f keyword

Od strony man :

-f       Wzorzec jest zwykle dopasowywany tylko do nazwy procesu. Gdy -fjest ustawiona, używana jest pełna linia poleceń.


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

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

Zwróć uwagę na []pierwszą literę słowa kluczowego. To przydatna sztuczka, aby uniknąć dopasowania samego awkpolecenia.


3
ps jest nadużywany, a pgrep tak niedostatecznie używany. Dzięki za post.
Felipe Alvarez

6
Jednym ze sposobów przekazania wyjścia do zabicia jest: kill -9 `pgrep -f keyword`
Kris

Ta odpowiedź jest najlepsza ze wszystkich. Tyle czasu, z którym zmarnowałemps aux | grep chrome
Brandon,

Musiałem użyć tej [k]sztuczki pgrep -f. Mój skrypt został uruchomiony w podpowłoce więc myślę, że to było podniesienie jego polecenie rodzica (trudno wiedzieć na pewno - PID powrócił zniknęła, gdy polecenie zostało wykonane wykonaniu!)
ArtOfWarfare

2
@Kris w tym przypadku użycia nie byłby prostszy w użyciu pkill -9 -f keyword?
oidualc

53

Próbować

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

To polecenie powinno dać ci PID procesów zawierających SŁOWO KLUCZOWE. W tym przypadku awkzwraca wynik w drugiej kolumnie.


2
Ponieważ może to zwrócić więcej niż jeden pid, możesz uzyskać pierwszy, dołączając | head -1.
Kris

'head -1' zwróci grep PID w niektórych Linuksach, Powinien być tail -1.
Joao Vitorino

22

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


4
Może literówka? ps -ef | grep SŁOWO KLUCZOWE | grep -v grep | awk '{print $ 2}'
rmv

Czy wiesz, jak przekazać zwrócony PID do „kill -9”?
alybadawy

3
@alybadawy po prostu dodaj | xargs kill -9na koniec
patte

8

używam

ps -C "keyword" -o pid=

To polecenie powinno dać ci numer PID.



3

Aby zabić proces za pomocą określonego słowa kluczowego, możesz utworzyć alias w ~/.bashrc(linux) lub ~/.bash_profile(mac).

alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"

Idealny! Dodanie fajki na koniec | head -1owijek to wszystko ładnie i schludnie.
Russ
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.