LINUX.ORG.RU

Какой пример не заработает без «nohup»?

 , ,


0

4

Всем привет.

Debian 9, Bash 4.4.12.

Пишу скрипты, каждый из которых подключается по SSH к какому-нибудь серверу и запускает на нём какую-нибудь программу, чтобы эта программа работала и после отключения SSH. Везде, где я читал, пишут, что для такого запуска нужно использовать команду «nohup». Но я сделал пример без «nohup», и он всё равно работает. Вот мой пример:

  1. Подключаюсь по SSH к серверу
  2. Запускаю скрипт: ./test &
  3. Отключаюсь от сервера
  4. Через другое подключение вижу, что скрипт продолжает работать (в лог-файл продолжают добавляться значения) Вот текст скрипта ‘test’:
i=1
while (($i <= 60)); do
	echo $i >> ./log
	sleep 1
	i=$(($i+1))
done

Вопрос: Какой пример не заработает без «nohup»?


...
    echo $i
...
anonymous
()

Зависит от поведения оболочки (командного интерпретатора) под которой запускалась программа. Для bash - поведение определяется опцией huponexit. Если опция не установлена - сигнал SIGHUP не посылается фоновым процессам при завершении работы самой оболочки. За подробностями в man.

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

Спасибо. Да, у меня в bash опция huponexit оказалась выключена. А чтобы мой пример не заработал, мне нужно её включить. Включаю её в одном экземпляре оболочки, командой shopt -s huponexit, а в других экземплярах эта опция остаётся выключенной. Не подскажете, как эту опцию включить глобально, чтобы для всех новых экземпляров bash она оказывалась включенной?

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