我写了一个python脚本,它做了一些curses和pysqlite的东西,但是我注意到在我通过ssh运行这个脚本的情况下,当ssh会话由于某种原因而被杀死时,python脚本没有实际上退出,而不是最终成为init的孩子,只是永远呆在那里。我无法杀死他们或任何东西。它们还将报告的系统负载增加1.目前我有8个主要是死机进程,服务器的平均负载为8.abit。我认为这是因为这些脚本正在等待某种资源,但是lsof显示它们实际上没有打开,它们使用的所有数据文件都被列为已删除等...并且它们不使用任何CPU时间
我正在脚本中进行一些信号检查,呼吁在HUP上做一些刷新例程,但没有别的,没有分叉或任何东西,我不知道为什么这些脚本不仅仅是随机播放当我关闭我的ssh会话时。
谢谢Chris
答案 0 :(得分:1)
嗯,当你的ssh会话终止时他们没有关闭的原因是因为HUP是父母用来告知孩子他们应该关闭的信号。如果您要覆盖此信号的行为,那么当SSH会话关闭时,您的进程将不会自动关闭。至于为什么你不能杀死他们,但是,我不知所措。我见过的唯一一件事导致这种行为是在行为不端的文件系统上被阻止的进程(nfs& unionfs是我遇到问题的两个)。