Linux 关于后台进程自动 kill

sapronlee · 2012年11月17日 · 最后由 terrywang 回复于 2012年11月21日 · 4178 次阅读

有一个xxx.py文件我需要启动后一直运行着,于是我使用

nohup python xx.py &

这样启动没问题,结束 ssh 连接也没问题,不过就是过一会(时间不定,有时 1 小时,有时几分钟)就是被自动结束。

请教各位是什么情况造成的!

程序执行出错了于是就退了,我是这么理解的 @元芳 你怎么看?

以 cron 方式运行呢?默认 ssh 不是持久链接的

我知道 ssh 不是持久的,所以我用了 nohup,但是还是要断掉!有没有更好的方式来实现,写一个守护进程是否复杂?

nohup 来跑就已经是个守护进程了。先看看代码本身的逻辑吧,如果:

  • 主动退出 (看 lz 的描述应该不像)
  • 有异常没能捕获
  • 没写成无限循环,自然退出 (看描述也不像)

那么都可能自动结束。nohup 默认会把进程的标准错误/标准输出都存下来 (具体位置看man nohup), 可以看看有没有打出错误信息什么的。

如果代码不要求很严谨,可以更激进一些:用一个能提供自动重启的工具 (比如 supervisor) 而不是 nohup 来管理进程,进程挂了就强制重启之。实在闲得没事了再去调查原因......

除了上面几位说的,如果要自动重新运行,可以考虑 monit 或类似的工具。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号