ssh 连接失败时如何防止 nohup 进程被终止

ssh 连接失败时如何防止 nohup 进程被终止

我遇到了一个奇怪的问题。我有一个服务器进程,它使用 nohup 启动,并且在注销和重新登录后仍然正常。但是,如果我保持登录状态,然后由于我的笔记本电脑进入睡眠状态而收到“管道损坏”消息,我回来时会发现该进程大约在我的笔记本电脑进入睡眠状态时停止(虽然很难验证确切的时间)。即使我在启动该进程后已注销并重新登录,也会发生这种情况。

为什么会发生这种情况?我原以为 nohup 意味着它会忽略 SIGHUP?是否发送了其他信号?我知道 screen,但是有没有办法避免这种情况,而不必依靠在 screen 中运行程序(这是我们刚刚放弃的先前解决方案)?

脚本中启动该过程的命令如下所示...

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,因此某些程序仍可能因该原因而失败。尝试输出可能会导致错误。如果程序有活动读取,也可能会出错。

这些就是我使用 Screen 的原因。我认为没有理由避免使用 Screen。

相关内容