如何检查linux进程以确定进程何时/何时终止/终止?

时间:2010-11-01 15:35:04

标签: python linux process

我有一个python irc bot,我通过/etc/init.d/phenny start以root身份启动。有时它会死掉,但似乎一夜之间就会发生。

我可以做些什么来检查它并在文本文件中查看进程的状态?

5 个答案:

答案 0 :(得分:1)

如果您对真正低级别的流程活动感兴趣,可以在strace下运行python解释器,并将标准错误重定向到文件。

如果您只对机器人崩溃时检查python代码感兴趣,并且您在源中发生崩溃的位置,则可以使用try / except包裹该位置。 except子句中的break into the debugger

import pdb; pdb.set_trace()

但是,您可能需要以非守护进程模式运行机器人才能使用它。

答案 1 :(得分:1)

如果你知道它仍然在运行,你可以将它堆叠起来看它的回溯。我不确定它会有多大用处,因为你会看到解释器的调用堆栈。您也可以像其他人提到的那样尝试strace或ltrace。

我还要确保在脚本运行的任何环境中,你都设置了ulimit -c unlimited,以便在python完全崩溃的情况下生成核心。

我可能尝试的另一件事是让这个工作由不等待它的孩子的父母执行。即使底层作业已退出,这也应该导致proc表项作为僵尸保留。

答案 2 :(得分:0)

你可能想尝试Python psutils,这是我使用和工作的东西。

答案 3 :(得分:0)

获得关于这个问题的一些额外线索的便宜方法是用

开始
/etc/init.d/phenny start 2>/tmp/phenny.out 1>&2

当它崩溃时,检查/tmp/phenny.out的尾部以获取Python回溯。

答案 4 :(得分:0)

如果您只需要验证进程是否正在运行,您可以运行一个检查命令输出的脚本

ps ax | grep [p] henny

每隔几秒钟。如果它是空的,那么显然这个过程已经死了。

相关问题