LINUX.ORG.RU

Как убить сразу группу процессов?


0

0

Хочется убить сразу кучу процессов: скрипт-родителя и всех его детей, внуков и т.д., то есть всех потомков. Я знаю, что это можно сделать как-то посредством process grouping и командой kill, но как конкретно? man kill не просветил :(

Подскажите, плиз...

Заранее премного благодарен.

anonymous

Любой сигнал посылаемый родителю получат все процессы порожденные от родителя.

Другое дело что потомки могут обработать сигнал по своему/заигнорировать его.

lb
()
Ответ на: комментарий от lb

Гм, ну это по меньшей мере странно. Я запускаю скрипт build.sh с PID-ом build.sh.pid, он запускает мультитредовую программу (java например), та в одном из нативов еще что-то execve-кает. Тогда я выполняю kill -9 build.sh.pid, умирает только мой build.sh. Все java и порожденный процессы остаются - я могу смотреть от них логи, они работают...

Ы?

anonymous
()

killall -9 name

???

anonymous
()

>скрипт-родителя и всех его детей, внуков и т.д.,

Уточняте пожалуйста ституацию.
Деть (чаилд) может легко изменить pid родителя сделав его равным 1.
Возможно вы и не сможете понять кто там родитель.

Aleks_IZA
()
Ответ на: комментарий от lb

> Любой сигнал посылаемый родителю получат все процессы порожденные от родителя.

нет, это неверно.

но можно послать сигнал группе процессов:
      kill(-pid_of_group_lrader, signal)

хотя правильнее, как Dead сказал, killpg().

idle ★★★★★
()

меня тоже очень этот вопрос интересует, и именно сейчас.

Есть шелл-скрипт. Нужно убить всех детей и внуков. Ответа на вопрос не прозвучало. То что тут написано это не ответ, это фигня какая-то.

dilmah ★★★★★
()
Ответ на: комментарий от lb

Я в этом не профи, но имхо. Помоему это происходит при умерщвлении лидера сеанса,или потери контролирующего терминала. Все потомки получают SIGHUP. Это имхо, я не уверен. В других случаях , если сигнал подается с клавиатуры (ctrl+c например), то вроде тоже все кто связан с терминалом получают сигнал.

Просот имхо иначе получиться глупая ситуция. Например запущен сетевой сервис, который что-то там форкает, совершенно к нему не относящееся (например интерпретатор баш, и передает ему принятое соединение через dup и pipe).Сервис через некоторое время получает SIGPIPE, но из-за проблем с уже другим соединением. И что этот сигпайп получат все его потомки? То есть и баш, которого этот сигнал никак не касается?

PS. Что можно внятное почитать поп оводу сессий, групп процессов, и сигналов, а то мне кажется бред пишу.

OxiD ★★★★
()
Ответ на: комментарий от dilmah

то есть нужно чтобы по ctrl-c в обработчике trap скрипт мог убить своих детей. Сейчас у меня если прерываешь скрипт, то его дети продолжают работать.

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.