ssh telnet断开之后,程序继续执行
问题
有时候会遇到退出ssh、telnet远程连接后,我们启动的进程就结束了,原因如下:根据POSIX.1定义:挂断信号(SIGHUP)默认的动作是终止程序。
当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。如果会话期首进程终止,则该信号发送到该会话期前台进程组。
一个进程退出导致一个孤儿进程组产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到改进程组中所有进程。
因此,当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。
解决方案
执行如下命令 nohup cmd &
,比如: nohup java -jar test.jar &