首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找出python脚本在后台停止工作的原因?

如何找出python脚本在后台停止工作的原因?
EN

Server Fault用户
提问于 2015-07-07 19:06:15
回答 1查看 5.4K关注 0票数 -2

几天前,我买了一台VDS服务器,只是为了让一些电报机24小时工作。

我不能总是打开shell,所以我决定使用这个“黑客”:

  1. 在Python中添加#!/usr/bin/python3.4

  1. sudo chmod u+x mybot.py sudo nohup ./mybot.py &脚本成功启动并运行良好,但在8-10小时内,它最终停止响应!不过,我在ps -aux输出中看到了这一点。

为了确定这是VDS的问题,我已经在我的ODroid-C1微型计算机上启动了一天的机器人。没有发现问题,两个脚本都正常工作。

主要的问题是我不知道为什么这些VDS上的机器人会停止响应。有什么办法能查出来吗?

ODroid和VDS都安装了Ubuntu14.04。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2015-07-07 20:09:25

您可以尝试其他两种方法:

第一种方法是使用屏幕:

代码语言:javascript
复制
sudo apt-get install screen

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

代码语言:javascript
复制
sudo ./mybot.py

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

代码语言:javascript
复制
screen -r

若要附加已运行python应用程序的屏幕会话,请执行以下操作

第二,添加从脚本的stdout和stderr重定向到日志文件(S)

代码语言:javascript
复制
sudo nohup ./mybot.py >> /var/log/mybot_out.log 2>>/var/log/mybot_err.log &

或合并成一个文件:

代码语言:javascript
复制
sudo nohup ./mybot.py >> /var/log/mybot_out.log 2>>&1 &

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

编辑:如果您看不到从应用程序输出到stdout的任何有用的东西,那么当它挂起时,stderr --安装strace,并将它附加到您的脚本处理中:

代码语言:javascript
复制
strace -p <PID>

也许你能从中找到有用的东西。如果没有显示任何有用的内容(再次)--从strace重新启动应用程序。

代码语言:javascript
复制
... strace ./mybot.py

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

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/704172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档