根据这个常见问题(以及许多其他书籍):
ftp://rtfm.mit.edu/pub/faqs/unix-faq/programmer/faq
1.15为什么我的进程在其父级死亡时不会获得SIGHUP?
当没有“已停止”时,SIGHUP将不会被发送到后台进程。
但是我们都知道如果在后台进程中没有捕获到SIGHUP,当你关闭终端(或像ssh这样的连接)时它们就会死掉。
即。当终端关闭时,CTRL + Z-bg不足以使进程生存。
但为什么呢? 任何智慧都值得赞赏!
答案 0 :(得分:1)
有一个简单的解决方案。在运行命令之前使用nohup。
答案 1 :(得分:0)
以下是步骤:
终端关闭,bash从内核(驱动程序)接收SIGHUP
Bash在收到SIGHUP时默认退出。在退出之前,它会将SIGHUP重新发送到所有作业,正在运行或停止
所有工作(包括后台流程)如果不捕获SIGHUP则退出