У меня странная проблема. У меня есть серверный процесс, который запускается с помощью 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
Сигнал HUP - не единственное, что может остановить или убить процесс при отключении терминала. Управляющего tty не будет, поэтому какая-то программа все равно может дать сбой по этой причине. Попытки вывода могут вызвать ошибку. Если программа имеет активное чтение, она тоже может получить ошибку.
Это причины, по которым я использую screen. Не вижу причин избегать экрана.