LINUX.ORG.RU

bash shell jobs


0

0

Имеется такой вопрос:

Имеем: Есть шелл в нем запушена куча jobов.

Проблема: Если шелл умер, джобы продолжают жить.

Хочется: Чтобы джобы умерли каким угодно способам при смерти породившего шелла.

Зопросы вроде 'bashing children' в гоогле выводят много интересного, но ничего по теме.

Спасибо.

★★★

trap 'kill `jobs -l | cut -d " " -f 3`' exit

Можно добавить в ~/.bashrc если надо чтоб такое происходило всегда.

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

После -9 программы не живут, так что для такого случая надо извращаться. Можно, например, сохранять пид баша при старте, а потом по крону проверять его жизнеспособность и с помощью ps --ppid убивать детей. Правда, тогда надо учесть варианты с disown и nohup, например, перегрузив их соответствующими функциями...

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

Были идеи запустить ещё одного потомка чтобы как-нибудь последил за запущенными 'товарищами' через session id или process group id, как нибудь автоубить процессы-потомки...

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

В общем, спасибо. обойдутся trapом. Потом еще поковыряюсь :)

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