Как убить все процессы, соответствующие имени?
Скажем, я хочу убить каждый процесс, содержащий слово amarok. Я могу распечатать команды, которые я хочу выполнить. Но как я могу заставить оболочку выполнить их. то есть.
ps aux | grep -ie amarok | awk '{print "kill -9 " $2}'
Output:
kill -9 3052
kill -9 3071
kill -9 3076
kill -9 3077
kill -9 3079
kill -9 3080
kill -9 3082
kill -9 3083
kill -9 3084
kill -9 3085
kill -9 3086
kill -9 3087
kill -9 3088
kill -9 3089
kill -9 4031
Ответы
Ответ 1
От man 1 pkill
-f The pattern is normally only matched against the process name.
When -f is set, the full command line is used.
Это означает, например, если мы увидим эти строки в ps aux
:
apache 24268 0.0 2.6 388152 27116 ? S Jun13 0:10 /usr/sbin/httpd
apache 24272 0.0 2.6 387944 27104 ? S Jun13 0:09 /usr/sbin/httpd
apache 24319 0.0 2.6 387884 27316 ? S Jun15 0:04 /usr/sbin/httpd
Мы можем убить их всех с помощью опции pkill -f
:
pkill -f httpd
Ответ 2
ps aux | grep -ie amarok | awk '{print $2}' | xargs kill -9
xargs (1): xargs - построить список аргументов и выполнить утилиту. Полезно, когда вы хотите использовать аргументы в аргументах, например, kill
или ls
или так далее.
Ответ 3
использовать pgrep
kill -9 $(pgrep amarok)
Ответ 4
Безопасный способ сделать это:
pkill -f amarok
Ответ 5
Я думаю, что эта команда killall - именно то, что вам нужно.
Команда описывается как "уничтожить процессы по имени". Легко использовать. Например
killall chrome
Эта команда уничтожит весь процесс Chrome. Вот ссылка о команде killall
http://linux.about.com/library/cmd/blcmdl1_killall.htm
Надеемся, что эта команда вам поможет.
Ответ 6
pkill -x точно соответствует имени процесса.
pkill -x amarok
pkill -f аналогичен, но допускает шаблон регулярного выражения.
Обратите внимание, что pkill без других параметров (например, -x, -f) позволит частичные совпадения имен процессов. Так что "pkill amarok" убил бы amarok, amarokBanana, bananaamarok и т.д.
Я хочу, чтобы -x было по умолчанию!
Ответ 7
Если вы хотите выполнить вывод команды, вы можете поместить ее внутри $(...)
, однако для вашей конкретной задачи взгляните на команды killall
и pkill
.
Ответ 8
Вы также можете оценить свой результат как подпроцесс, окружая все с помощью обратных тиков или помещая его внутри $():
`ps aux | grep -ie amarok | awk '{print "kill -9 " $2}'`
$(ps aux | grep -ie amarok | awk '{print "kill -9 " $2}')
Ответ 9
попробуйте kill -s 9 ps -ef |grep "Nov 11" |grep -v grep | awk '{print $2}'
Чтобы убить процессы 11 ноября
или
kill -s 9 ps -ef |grep amarok|grep -v grep | awk '{print $2}'
Чтобы убить процессы, содержащие слово amarok
Ответ 10
Возможно, добавление команд в исполняемый файл, установка разрешения + x и последующее выполнение?
ps aux | grep -ie amarok | awk '{print "kill -9 " $2}' > pk;chmod +x pk;./pk;rm pk