在Screen中运行的Python脚本中查找错误

时间:2016-03-11 08:29:26

标签: python shell gnu-screen

我编写了一个运行无限循环的python脚本。该脚本在屏幕会话中启动。然而,有时候,经过几个小时甚至几天后,它会因为我现在没有原因而崩溃,因为屏幕会话会在发生时关闭。

我还创建了一个"看门狗"脚本包含以下代码,该代码也在屏幕会话中运行:

from subprocess import check_output
import os
import time
import random
time.sleep(20)
def screen_present(name):
    try:
            var = check_output(["screen -ls; true"],shell=True)
            if "."+name+"\t(" in var:
                    print name+" is running"
            else:
                    print name+" is not running"
                    print "RESTARTING"
                    os.system("screen -dmS player python /var/www/updater.py > /dev/null 2> /dev/null & echo $")
    except:
            return true


while True:
    screen_present("updater")
    time.sleep(random.uniform(6, 10))

因此,当我在离开它们运行一晚左右后检查我的脚本时,我有时会发现,

  • 原始代码的屏幕会话不再存在, 因为我的脚本必须抛出异常,但我无法找到答案 修复它
  • 我的看门狗的屏幕会话被标记为"死"

你们会怎么做才能找到错误并确保稳定运行?

1 个答案:

答案 0 :(得分:1)

当您启动python进程时,将其输出到文件。像这样:

python myfile.py >> log.txt 2>&1

即使文件死亡,您也可以访问该文件。