Смотря на использование kill -9
вместо killall
использование имени процесса.
Есть ли способ, которым я могу grep
или awk
pid данного процесса name/s затем уничтожает его, будет kill -9
? killall
сбои много для меня.
Я надеюсь писать сценарий этого для многочисленных удаленных машин.
Имя процесса будет одним из три.
Я хочу использовать что-то как:
sshpass -p 'password' ssh -n $user@$hostname "one liner to use kill -9"
Какие-либо идеи?
Аргумент -9
, который вы упомянули, указывает сигнал kill
, который должен быть отправлен в рассматриваемый процесс. По умолчанию SIGTERM (завершить приложение), 9 эквивалентно SIGKILL (уничтожить приложение немедленно и наиболее жестоко).
killall
принимает аргументы сигнала (например, -9
или -KILL
, я предпочитаю символические имена над числами):
killall -KILL processname
В качестве альтернативы, есть pkill
, который убивает процессы, которые соответствует заданному шаблону команды, который также принимает аргументы сигнала. Вы можете «просмотреть» то, что будет убито им, используя pgrep -a
, в котором перечислены соответствующие прогрессы вместо отправки сигнала и их уничтожения:
pgrep -a processname
pkill processname
Если вы хотите сопоставить свой шаблон с целой командой включая его аргументы, а не только базовую команду, добавьте переключатель -f
:
pgrep -a -f something
pkill -f something
Для получения дополнительной информации посмотрите соответствующие страницы руководства: man kill
, man killall
, man pkill
для различных команды kill и man 7 signal
для обзора доступных сигналов.