我有一个'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脚本。
答案 0 :(得分:6)
我有预感,这是由于cron
处理stdout的方式。你如何重定向输出?
来自http://aplawrence.com/BDD/bbcronbasics.html:
输出
通常任何程序的输出都是 发送到STDOUT(标准输出)和 通常会在某人的显示屏上结束 屏幕。对于由cron发起的工作, STDOUT将定向到当地 邮件子系统,表示任何输出 由cron作业生成的邮件将被邮寄 拥有这份工作的用户。如果这 你不应该采取措施 将您的cron作业的输出重定向到 一份文件。它也建议你 将STDERR(标准错误)重定向到a 文件,以便能够分析任何 你的cron工作中的异常 执行。