【发布时间】:2012-12-09 12:38:57
【问题描述】:
我有一个带有 raspbian 的树莓派,并且我创建了一个我需要一直运行的 python 脚本。问题是,运行一个小时左右,脚本突然停止,python进程关闭。我不知道为什么,而且我对 linux 很陌生,所以我不知道如何调试它或任何东西。我认为这不是内存问题,因为在 while 循环中我释放并重新初始化所有使用的对象。如何找出问题所在,或者至少在程序停止后自动重新启动程序?
这是代码:
import time
import sys
import ftputil
import pygame
import pygame.camera
import logging
pygame.camera.init()
#pygame.camera.list_camera() #Camera detected or not
cam = pygame.camera.Camera("/dev/video0",(640,480))
count = 5
logging.basicConfig(filename='log.log', level=logging.INFO)
logging.info(str(time.time())+" : Script was started")
while True:
cam.start()
img = cam.get_image()
pygame.image.save(img,"current.jpeg")
cam.stop()
host = ftputil.FTPHost(**)
host.upload("./current.jpeg", "/domains/*/public_html/webcam.jpg", mode='b')
host.close()
if not count:
host = ftputil.FTPHost(**)
filename = str(time.time()) + ".jpg"
host.upload("./current.jpeg", "/webcamarchive/"+filename, mode='b')
host.close()
count = 10
logging.info(str(time.time())+": Still running")
count -= 1
time.sleep(3)
我从 ssh 运行脚本。但是我也想让它在计算机启动时启动,我该怎么做呢?
【问题讨论】:
-
您是否在 bash shell 中以用户身份运行脚本?
-
您的系统日志中是否有任何内容,无论是来自脚本还是关于进程?
-
另外,这里绝对没有错误处理。您确定您调用的任何函数(例如
cam.get_image()或host.upload()或其他任何函数)都不会引发异常吗? -
最后,我很确定这不是您的实际代码,因为
if !count:在 Python 中是SyntaxError。隐藏FTPHost参数很好(尽管测试它是否相关,如果您仍然可以在没有它的情况下重现问题,则完全删除所有 FTP 内容,会更好)。但请尽可能尝试发布实际运行的代码并展示您尝试测试的问题。 -
该!是最后一分钟的更改,我没有测试它,我只是假设这就是你用 python 编写的方式,我不习惯那种语言。另外,正如我所说我对 linux 很陌生,我如何检查系统日志?不,我不确定这些函数不会引发异常,但我真的不知道如何检查。
标签: python linux crash cron debian