如何找出 Python 脚本在后台停止运行的原因?

如何找出 Python 脚本在后台停止运行的原因?

几天前我买了一台 VDS 服务器,就是为了让一些 Telegram 机器人全天候工作。
我无法让 shell 一直打开,所以我决定使用这个“黑客”:
1. 在 Python 脚本中添加#!/usr/bin/python3.4
2。 sudo chmod u+x mybot.py sudo nohup ./mybot.py & 脚本成功启动并正常工作,但是,在 8-10 小时后它最终会停止响应!ps -aux不过我在输出中看到了它。
为了确定这是 VDS 的问题,我在我的 ODroid-C1 微型计算机上启动了机器人一天。没有发现任何问题,两个脚本都正常工作。

主要问题是我无法弄清楚为什么 VDS 上的这些机器人会停止响应。有什么方法可以找出原因吗?

PS ODroid 和 VDS 都安装了 Ubuntu 14.04。

答案1

您可以尝试另外两种方法:

第一种方式,使用屏幕:

sudo apt-get install screen

然后启动屏幕运行相同的命令,并在没有 nohup 的情况下在“屏幕”中运行脚本。

sudo ./mybot.py

Ctrl+A Ctrl+D 可从屏幕分离,断开与 ssh 会话的连接。下次当您看到应用程序挂起时,请输入

screen -r

附加到正在运行 Python 应用程序的屏幕会话

第二 - 从脚本的标准输出和标准错误重定向到日志文件

sudo nohup ./mybot.py >> /var/log/mybot_out.log 2>>/var/log/mybot_err.log &

或放入单个文件:

sudo nohup ./mybot.py >> /var/log/mybot_out.log 2>>&1 &

然后在下次挂断后调查日志文件。

编辑:如果在应用程序挂起时您无法从 stdout、stderr 看到任何有用的输出 - 安装 strace,并将其附加到脚本的进程中:

strace -p <PID>

也许您可以从中找到一些有用的东西。如果它没有显示任何有用的信息(再次) - 从 strace 重新启动应用程序。

... strace ./mybot.py

如果有足够的可用空间,最好将输出输出到日志文件。然后调查最后几千行日志(可能包含许多重复项)

相关内容