Есть ли способ (возможно, сценарий), как автоматизировать этот процесс:
petr@sova:~$ ps -ef | grep middleman
petr 18445 2312 1 12:06 pts/2 00:00:01 /home/petr/.rvm/gems/ruby-1.9.3-p362/bin/middleman
petr 18581 13621 0 12:08 pts/0 00:00:00 grep --color=auto middleman
petr@sova:~$ kill -9 18445
К сожалению, pkill
слишком слаб, так как я должен перейти с опцией -9
на kill
.
Вы можете использовать свою оболочку, чтобы выполнить эту задачу за вас:
kill -9 $(pidof middleman)
Оболочка выполняет команду pidof middleman
первой. Выводом pidof (8) является идентификатор процесса. Таким образом, оболочка заменяет команду pidof
на идентификатор процесса и выполняет kill -9 18845
(или любой другой правильный идентификатор процесса).
Просто ради интереса, я бы хотел добавить более мануальный, старый школьный способ
kill -9 `ps aux | grep middleman | awk '{print $2}'`
Другие ответы совершенно правильны, но я мог бы также добавить третий вариант, чтобы все они были описаны здесь. Вы также можете использовать:
pkill -9 middleman
См. man pkill
для получения дополнительной информации и дополнительных параметров.
Не имеет значения, какой из этих методов вы используете. Они все будут работать. Но знание параметров полезно, если вы хотите каким-либо образом изменить поведение, поскольку соответствующие справочные страницы показывают, какие другие параметры соответствия доступны.
Существует еще более простое решение, чем решение qbi: killall
позволяет вам убивать процессы по имени, и вы можете указывать сигналы.
killall -9 middleman
См. man killall
для получения дополнительной информации и дополнительных опций (их довольно много).
Как следует из названия, это посылает сигнал всем процессам с именем middleman
. Но это не отличается от других способов (например, pkill
). Кроме того, pkill -9 middleman
будет нацелен на процессы, имена которых совпадают, но не равны middleman
, например, middleman2
.
pkill -9 -f middleman
Опция -f
позволяет ему соответствовать всей командной строке, а не только имени процесса.
Обратите внимание, что -9
должен быть последним сигналом, а не чем-то, что обычно используется.
killall -9 -ir regex_pattern
, который является интерактивным (безопасным) и соответствует частичному имени команды.