在与同事长时间讨论之后问这个问题,我真的想在这里澄清一下.
我通过添加“&”来启动后台进程到命令行或用CTRL-Z停止它并在后台用“bg”恢复它.然后我退出了.
怎么了?
我们很确定它应该被一个SIGHUP杀死,但这并没有发生;再次登录时,进程很愉快,并且pstree显示它被init“采用”了.
这是预期的行为吗?
但是,如果是的话,nohup命令的目的是什么?看起来这个过程无论如何都不会被杀死,无论是否有……
编辑1
更多细节:
>该命令是从SSH会话启动的,而不是从物理控制台启动的.
>该命令是在没有nohup和/或& ;;的情况下启动的然后用CTRL-Z暂停并用bg在背景中恢复.
> ssh会话没有下降.有一个实际的注销(“退出”命令).
>该过程是一个scp文件复制操作.
>再次登录时,pstree显示进程正在运行并且是init的子进程.
编辑2
更明确地陈述问题:将后台进程(使用&或bg)使其忽略SIGHUP,就像nohup命令一样?
编辑3
我尝试手动发送一个SIGHUP到scp:它退出了,所以它肯定不会忽略该信号.
然后我再次尝试启动它,将它放在后台并注销:它被init“采用”并继续运行,我在重新登录时找到了它.
我现在很困惑.看起来没有一个SIGHUP被发送到所有upong注销.