Как предотвратить уничтожение процесса nohup при сбое подключения ssh

У меня странная проблема. У меня есть серверный процесс, который запускается с nohup и сохраняется при выходе из системы и повторном входе в систему. Однако, если я оставляю себя в системе и затем получаю сообщение "сломанная труба", потому что мой ноутбук перешел в спящий режим, я возвращаюсь и обнаруживаю, что процесс остановился примерно в то время, когда мой ноутбук перешел в спящий режим (хотя трудно точно проверить, когда это произошло), Это происходит, даже если я вышел из системы и снова вошел с момента запуска процесса.

Почему это происходит? Я думал, что nohup означает, что он проигнорирует SIGHUP? Какой-то другой сигнал отправляется? Я знаю об экране, но есть ли способ избежать этого, не прибегая к запуску чего-либо на экране (от чего мы только что отошли)?

Команда в сценарии, которая запускает процесс, выглядит следующим образом...

nohup attivio -cmd start -nodump -project="$ATTIVIO_PROJECT" -node $NODENAME $ATTIVIO_ARGS foo.xml 2>&1 > $LOG_DIR/attivio.console.log &

Сценарий был вызван так:

source bin/start.sh 

1 ответ

Сигнал HUP - не единственное, что может остановить или убить процесс, когда терминал отключается. Там не будет никакого контроля tty, поэтому некоторые программы могут все еще не работать по этой причине. Попытки вывода могут привести к ошибке. Если программа имеет активное чтение, она также может получить ошибку.

Вот почему я использую экран. Я не вижу причин, чтобы избежать экрана.

Другие вопросы по тегам