расставляй правильно приоритеты и не отвлекайся на мелочи

Грамотно убиваем процессы в Linux

Жил я не тужил и спокойно гасил «зомби» процессы или просто те, которые необходимо было остановить, но у которых небыло штатных стартап скриптов в init.d, простой такой командой:

for ppid in `pidof -x pptpd`; do kill -SIGTERM $ppid; done

Но HowToGeek вовремя подсказал, что оказывается уже есть более простой способ делать такие вещи, а именно через две полезные команды работающие в паре — pkill и pgrep, которые делают это на ура.

Теперь я могу более «модно» :) убивать процессы. Например просто вот так:

pkill pptpd

Здесь надо заметить два момента:

Момент первый — pkill по умолчанию посылает процессу сигнал SIGTERM, что в некоторых случаях совсем неуместно, поэтому вид сигнала можно указывать явно:

pkill -SIGKILL pptpd
pkill -HUP syslogd

И второй — в шаблон поиска ID процесса по имени могут попасть вполне «нормальные» процессы, которые мы вовсе не хотим останавливать, поэтому перед выполнением pkill очень желательно проверить, что-же будет остановлено, с помощью pgrep:

pgrep -l pptpd

или указать на точное совпадение с названием демона процесса:

pkill -x pptpd

Счастливой охоты :)

P.S. Ржущие читатели говорят умные мысли, жалко только, что мимо блога. Пришлось перечитать man’ы. Оказалось, что pkill и pgrep были давно портированы с 7-ой Солярки, а сейчас более «модно» гасить процессы через killall, так что если у Вас свежий Linux, используйте killall. Komяpa спасибо за просвящение.
Ах, да, насчет зомби, я погорячился, читайте это слово в кавычках.

Ответить
Обязательные поля помечены *