2010-12-20 99 views
4

我有一个'长'python脚本,大约需要45 [分钟]运行。我使用另一个('调度程序'脚本)python脚本来运行这个长脚本。当我使用终端运行'scheduler'脚本时,一切都很完美(意思是'长'脚本运行没有任何问题)。Cron终止Python脚本?

我有一些挣扎,但最终成功地添加了“调度程序”脚本,每分钟运行一次cron。所以它现在'运行'其他脚本并且可以正常工作。

这里的问题是:当一个脚本(即正在被“调度”“运行”)有这样一行:

print "hello" 

或“打印”的说法,cron作业运行,但在20-30秒后终止。当我删除任何'打印'语句时,cron正常运行作业并且不终止。

我想解决这种情况,并让脚本继续运行,即使他们有一些“打印”语句。任何提示如何做到这一点?

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

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

到“跑”所有其他的Python脚本。

回答

6

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

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

OUTPUT

通常任何程序的输出是 送到STDOUT(标准输出)和 通常某人的显示 屏幕上卷起。对于由cron启动的作业, STDOUT将被定向到本地的 邮件子系统,这意味着由cron作业生成的任何输出 将邮寄给拥有作业的用户 。如果此 不可取,则应采取步骤 将您的cron作业的输出重定向至 文件。还建议您 将STDERR(标准错误)重定向到 文件,以便能够分析您的cron作业的 执行中的任何 异常。

+0

谢谢。目前我不知道如何指导输出。有任何想法吗?另外,我从来没有收到一封来自cron的邮件。有什么设置我需要定义? – user3262424 2010-12-20 17:55:14

+0

通过邮件,它们表示每个* nix用户在自己的系统上拥有的本地邮件系统。要将输出重定向到文件,可以使用>重定向操作符:'python scheduler.py> output.log' – Aphex 2010-12-20 18:07:34

+0

谢谢Aphex。所以现在我知道如何将输出指向文件。我确实在Evolution(我使用Ubuntu 10.04)中设置了一个电子邮件帐户,并且从未收到Cron的电子邮件。我该如何解决它? – user3262424 2010-12-20 18:42:34