Я ищу способ убить процессы в соответствии с их именем ('job_runner_'). это то, что я сейчас делаю, я запускаю следующую команду:ps -ef |grep job_runner_ и затем запускаю kill -9 в каждом из возвращаемых процессов (может быть возвращено несколько процессов).

Как я могу сделать это по одной команде?

5 ответов5

2

Упомянутый killall находится в пакете psmisc (по крайней мере, так называется в установках на основе Debian). Другой альтернативой является pkill который находится в пакете procps .


Вы должны использовать инструмент, который сделан для этой цели. Если вы действительно, действительно, действительно хотите сделать это, анализируя вывод ps , вы можете сделать что-то вроде

ps -ao pid,comm | awk '/job_runner_/{system("kill "$1)}'
0

killall сделает это для вас.

название

killall - убивать процессы по имени

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

Также обратите внимание, что предпочтительно не убивать процессы сразу, используя опцию -9. Вместо этого следует использовать обычное уничтожение, поскольку это даст процессу возможность перехватить этот сигнал, выполнить любую очистку и затем завершить работу чисто. Использование -9 не позволит процессу сделать это, и его следует использовать только для проблемных / не отвечающих процессов.

0

Вы могли бы сделать это с помощью killall

killall --regexp ^job_runner.*
0

Просто используйте pkill job_runner_ .

Вы также можете проверить процессы по имени с помощью pgrep job_runner_ .

-1
ps -ef | grep job_runner_ | xargs kill -9

Попробуй это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .