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

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

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 .

1
задан 12 January 2013 в 03:45

5 ответов

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

killall -9 middleman

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

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

53
ответ дан 25 May 2018 в 02:32

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

pkill -9 middleman

Для получения дополнительной информации и дополнительных опций см. [F2].

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

16
ответ дан 25 May 2018 в 02:32
  • 1
    Странно, здесь не работает. Также middleman* – mreq 12 January 2013 в 02:47
  • 2
    Ах. Более внимательно, кажется вероятным, что вы хотите убить интерпретатора ruby, а не процесс, который действительно называется middleman. В этом случае различия в том, как точно соответствуют процессы pkill, killall, pidof и grep, действительно начинают иметь значение! – Robie Basak 12 January 2013 в 02:50
pkill -9 -f middleman

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

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

12
ответ дан 25 May 2018 в 02:32
  • 1
    благодаря! Мне очень нравится способность сопоставлять complete command line – cwd 20 August 2014 в 07:19
  • 2
    полная командная строка действительно крутая! – okwap 25 December 2015 в 06:43

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

kill -9 `ps aux | grep middleman | awk '{print $2}'`
9
ответ дан 25 May 2018 в 02:32
  • 1
    Я сделал это на работе несколько лет назад, и администратор посмотрел на меня так, что сказал «хорошо, дедушка». Также можно добавить grep -v grep перед awk, чтобы убедиться, что он также не убивает команду grep. – Iain Holder 12 January 2013 в 14:16
  • 2
    @gerhard, спасибо за редактирование, не смог найти обратные тики на моем iPad. grep -v - хорошая идея ... – slipset 12 January 2013 в 14:23
  • 3
    Реальный старый школьный путь - написать ... grep [m]iddleman ..., чтобы случайно не убить процесс grep. Таким образом, grep не может соответствовать себе из-за смешного цитирования. – Mikko Rantalainen 13 January 2016 в 17:13
killall -9 -ir regex_pattern

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

1
ответ дан 25 May 2018 в 02:32

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

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