Cron终止Python脚本?

时间:2010-12-20 16:36:26

标签: python linux cron subprocess popen

我有一个'long'python脚本,大约需要45 [min]才能运行。我使用另一个('调度程序'脚本)python脚本来运行这个长脚本。当我使用终端运行'scheduler'脚本时,一切都运行良好(意思是,'long'脚本运行没有任何问题。)

我遇到了一些困难,但最终成功地添加了'scheduler'脚本来每分钟运行一次cron。所以它现在“运行”其他脚本并且工作正常。

问题在于:每当脚本(由“调度程序”“运行”)都有一行说明:

print "hello"

或任何'print'语句,cron作业运行,但在20-30秒后终止。当我删除任何'print'语句时,cron正常运行作业并且不会终止。

我想修复这种情况,即使脚本中有一些'print'语句,脚本也会继续运行。任何提示怎么做?

P.S。从“调度程序”中,我使用

subprocess.Popen([sys.executable, command])

“运行”所有其他python脚本。

1 个答案:

答案 0 :(得分:6)

我有预感,这是由于cron处理stdout的方式。你如何重定向输出?

来自http://aplawrence.com/BDD/bbcronbasics.html

  

输出

     

通常任何程序的输出都是   发送到STDOUT(标准输出)和   通常会在某人的显示屏上结束   屏幕。对于由cron发起的工作,   STDOUT将定向到当地   邮件子系统,表示任何输出   由cron作业生成的邮件将被邮寄   拥有这份工作的用户。如果这   你不应该采取措施   将您的cron作业的输出重定向到   一份文件。它也建议你   将STDERR(标准错误)重定向到a   文件,以便能够分析任何   你的cron工作中的异常   执行。