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)

Dennis Ich
źródło

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.

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

Lewis Norton
źródło
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}'

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

Arksonic
źródło
7

Jest to dostępne na linux: słowo kluczowe pidof

dbrank0
źródło
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}'`"
swayamraina
źródło
Idealny! Dodanie fajki na koniec | head -1owijek to wszystko ładnie i schludnie.
Russ