Сценарий оболочки для -9 убить на основе имени

Есть ли способ (возможно, сценарий), как автоматизировать этот процесс:

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.

28
задан 12 January 2013 в 01:45

6 ответов

Вы можете использовать свою оболочку, чтобы выполнить эту задачу за вас:

kill -9 $(pidof middleman)

Оболочка выполняет команду pidof middleman первой. Выводом pidof (8) является идентификатор процесса. Таким образом, оболочка заменяет команду pidof на идентификатор процесса и выполняет kill -9 18845 (или любой другой правильный идентификатор процесса).

0
ответ дан 12 January 2013 в 01:45

Просто ради интереса, я бы хотел добавить более мануальный, старый школьный способ

kill -9 `ps aux | grep middleman | awk '{print $2}'`
0
ответ дан 12 January 2013 в 01:45

Другие ответы совершенно правильны, но я мог бы также добавить третий вариант, чтобы все они были описаны здесь. Вы также можете использовать:

pkill -9 middleman

См. man pkill для получения дополнительной информации и дополнительных параметров.

Не имеет значения, какой из этих методов вы используете. Они все будут работать. Но знание параметров полезно, если вы хотите каким-либо образом изменить поведение, поскольку соответствующие справочные страницы показывают, какие другие параметры соответствия доступны.

0
ответ дан 12 January 2013 в 01:45

Существует еще более простое решение, чем решение qbi: killall позволяет вам убивать процессы по имени, и вы можете указывать сигналы.

killall -9 middleman

См. man killall для получения дополнительной информации и дополнительных опций (их довольно много).

Как следует из названия, это посылает сигнал всем процессам с именем middleman. Но это не отличается от других способов (например, pkill). Кроме того, pkill -9 middleman будет нацелен на процессы, имена которых совпадают, но не равны middleman, например, middleman2.

0
ответ дан 12 January 2013 в 01:45
pkill -9 -f middleman

Опция -f позволяет ему соответствовать всей командной строке, а не только имени процесса.

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

0
ответ дан 12 January 2013 в 01:45
killall -9 -ir regex_pattern

, который является интерактивным (безопасным) и соответствует частичному имени команды.

0
ответ дан 12 January 2013 в 01:45

Другие вопросы по тегам:

Похожие вопросы: