Отримання підс від ключового слова ps -ef | grep


111

Я хочу використати ps -ef | grep "keyword"для визначення pid демон-процесу (в ньому є унікальна рядок виводу ps -ef).

Я можу вбити процес, pkill keywordчи є якась команда, яка повертає pid, а не вбивати його? (pidof або pgrep не працює)

Відповіді:


231

Ви можете використовувати pgrep, поки ви не включите -fпараметри. Це робить pgrepвідповідність ключових слів у всій команді (включаючи аргументи), а не лише ім'я процесу.

pgrep -f keyword

На сторінці чоловіка :

-f       Шаблон зазвичай відповідає лише назві процесу. Коли -fвстановлено, використовується повний командний рядок.


Якщо ви дійсно хочете уникати pgrep, спробуйте:

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

Зверніть увагу на []першу букву ключового слова. Це корисна хитрість, щоб уникнути відповідності самій awkкоманді.


3
ps надмірно використовується, і pgrep так не використовується. Дякую за пост.
Феліпе Альварес

6
Один із способів передавати вихід для вбивства: kill -9 `pgrep -f keyword`
Кріс,

Ця відповідь найкраща. Так багато часу я виснаженіps aux | grep chrome
Brandon

Довелося використовувати [k]трюк на pgrep -f. Мій сценарій працював у нижній частині, так що я думаю, що він набирав свою батьківську команду (важко знати напевно - під, який він повернув, зник, коли команда була виконана!)
ArtOfWarfare

2
@Kris для цього випадку використання не буде простішим у використанні pkill -9 -f keyword?
oidualc

53

Спробуйте

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

Ця команда повинна дати вам PID процесів із KEYWORD у них. У цьому випадку awkповертає те, що знаходиться у 2-му стовпці з виводу.


2
Оскільки це може повернути більше одного піда, ви можете отримати перший, додавши | head -1.
Кріс

'head -1' поверне grep PID у деяких Linux, повинен бути хвіст -1.
Жоао Віторіно

22

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


4
Можливо, друкарська помилка? пс -еф | греп KEYWORD | grep -v grep | awk '{print $ 2}'
rmv

Чи знаєте ви, як передати повернений PID в "kill -9" ?!
alybadawy

3
@alybadawy просто додамо | xargs kill -9до кінця
патте

8

я використовую

ps -C "keyword" -o pid=

Ця команда повинна дати вам номер PID.



3

Щоб вбити процес за допомогою певного ключового слова, ви можете створити псевдонім у ~/.bashrc(linux) або ~/.bash_profile(mac).

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

Ідеально! Додавання труби в кінець | head -1обгортає це все добре і акуратно.
Русс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.