2013-03-12 2 views
2

Я аль выполнения этой команды:Killing процессы автоматически - Linux

pgrep -l someprocess 

я получаю некоторые выходы XXXX someprocess

тогда я убиваю каждый процесс, появляющийся вручную, я хотел бы написать скрипт, чтобы сделать это автоматически , но это Безразлично (т имеет смысл kill -9 $(pgrep -l someprocess | grep "^[0-9]{4}")

кто-то может помочь?

ответ

5

Вы можете использовать либо pkill, либо killall, чтобы выполнить именно это.

Я нашел this краткое и ясное резюме, объясняющее различные способы процесса kill.

pkill такой же простой как: pkill someprocess.

@ewm уже включил подробное объяснение относительно killall в свой ответ, поэтому я не повторяю его здесь.

+0

спасибо, я не знал об этом! – user1611830

+0

Просто любопытством, если бы мне пришлось написать его вручную, как бы я это сделал? – user1611830

+0

См. Мой обновленный ответ – shx2

3

Вы можете посмотреть на команду 'killall':

KILLALL (1) Пользовательские команды KILLALL (1)

ИМЯ killall - убить процессы по имени

СИНТАКСИС killall [ -Z, - context pattern] [-e, - exact] [-g, - process-group] [-i, - interactive] [-q, - quiet] [-r, - regexp ] [-s, - signal signal] [-u, - user user] [-v, - verbose] [-w, - wait] [-I, - ignore-case] [-V, --version] [-] name ... killall -l killall -V, - version

ОПИСАНИЕ killall отправляет сигнал всем процессам, выполняющим любую из указанных команд. Если имя сигнала не указано , отправляется SIGTERM.

Signals can be specified either by name (e.g. -HUP or -SIGHUP) or by number (e.g. -1) or by option 
    -s. 

    If the command name is not regular expression (option -r) and contains a slash (/), processes execut- 
    ing that particular file will be selected for killing, independent of their name. 

    killall returns a zero return code if at least one process has been killed for each listed command, 
    or no commands were listed and at least one process matched the -u and -Z search criteria. killall 
    returns non-zero otherwise. 

    A killall process never kills itself (but may kill other killall processes). 
+0

+1 'killall' гораздо более вездесущий. На многих платформах нет 'pkill'. 'sed' /' grep', 'ps' и' kill' также являются опциями. 'kill -9 $ (ps -ef | grep [Tt] arget | sed -e 's/[A-Za-z] * * \ ([0-9] [0-9] * \). */\ 1/') 'будет делать в крайнем случае, но гораздо более хрупкий. –