Получение сообщений из ps -ef | grep ключевое слово

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

Я могу убить процесс с помощью pkill keyword есть ли какая-либо команда, которая возвращает pid вместо того, чтобы убить его? (pidof или pgrep не работает)

Ответ 1

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

pgrep -f keyword

На странице man:

-f   Обычно шаблон сопоставляется только с именем процесса. Когда -f установлен, используется полная командная строка.


Если вы действительно хотите избежать pgrep, попробуйте:

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

Обратите внимание на [] вокруг первой буквы ключевого слова. Это полезный трюк, чтобы избежать соответствия самой команды awk.

Ответ 2

Try

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

Эта команда должна дать вам PID процессов с KEYWORD в них. В этом случае awk возвращает то, что находится во 2-м столбце от выхода.

Ответ 3

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

Ответ 4

Я использую

ps -C "keyword" -o pid=

Эта команда должна дать вам номер PID.

Ответ 5

Это доступно в linux: ключевое слово pidof