LINUX.ORG.RU

bash exit & jobs


0

0

Вот например скриптик #!/bin/sh while true; do sleep 5; done;

Запускаем из bash bash$./test & делаем exit, bash выходит, а процесс остается.

Делаем тоже в zsh, сначала печатается сообщение о том, что есть дочерние процессы, потом шелл выходит и завершает дочерние процессы. Вроде и bash должна вести себя так же, даже в man'е про это написано, да чего-то не видно. Может, что-нибудь нужно в скрипте поправить, или настройки bash изменить?

Заранее спасибо за помощь.

anonymous

Разве же должен? По-моему bash пишет только для stopped jobs.

Murr ★★
()

Должен, хотя только в интерактивном и логин шелле и для этого нужно включить 
bahs$ shopt -s huponexit

Это работает. Другой вопрос, вот у меня в цикле работает крутилка, которая запускается 

bash$ (some_script &)

Как отследить, чтобы она вышла, когда вышел login-shell. С чем это вообще связано, насколько я понимаю, в других юниксах как только 
процесс теряет терминал, он завершается, почему в linux это не так?






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

Если сам bash не пошлет сигнал, то никто не пошлет. При завершении лидера все процессы в сеансе отключаются от терминала, foreground группе посылается SIGHUP, остальным пофиг.

Можно изратиться примерно так: (...|while [ -e /proc/$PPID ]; do :; done; kill -9 -`awk '{ print $5 }' /proc/self/stat`)&

Тогда троеточию будет послан SIGKILL когда умрет bash. :)

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