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

0 投票
5 回答
962 浏览
提问于 2025-04-16 06:23

我有一个Python的IRC机器人,我通过运行/etc/init.d/phenny start来以管理员身份启动它。不过,有时候它会崩溃,似乎这种情况经常发生在晚上。

我该怎么做才能检查它的状态,并把相关信息记录到一个文本文件里呢?

5 个回答

0

你可以试试Python的psutil库,我用过这个,它很好用。

1

如果你知道程序还在运行,可以用 pstack 命令查看它的回溯信息。不过我不太确定这有多大用,因为你看到的只是解释器的调用栈。你也可以试试 strace 或 ltrace,就像其他人提到的那样。

我还建议你确保在脚本运行的环境中,设置 ulimit -c unlimited,这样如果 Python 程序崩溃了,就会生成一个核心转储文件。

另外,我可能会尝试让这个任务由一个不等待子进程的父进程来执行。这样即使底下的任务已经结束,进程表中的条目也会保持为僵尸状态。

1

如果你对非常底层的进程活动感兴趣,可以在 strace 工具下运行 Python 解释器,并把错误信息保存到一个文件里。

如果你只是想在你的机器人崩溃时检查 Python 代码,并且你知道崩溃发生的具体位置,可以用 try/except 来包裹那个位置,并在 except进入调试器

import pdb; pdb.set_trace()

不过,你可能需要以非守护进程的模式运行你的机器人,这样才能让这个方法有效。

撰写回答