Cron终止Python脚本?

4 投票
1 回答
1066 浏览
提问于 2025-04-16 08:47

我有一个很长的Python脚本,大约需要45分钟才能运行完。我用另一个Python脚本(叫做“调度器”脚本)来运行这个长脚本。当我在终端里运行这个“调度器”脚本时,一切都很顺利(也就是说,这个长脚本没有任何问题地运行)。

我遇到了一些困难,但最终成功地把“调度器”脚本设置成每分钟通过cron运行一次。现在它可以正常运行其他脚本了。

问题是:每当被“调度器”运行的脚本中有一行是:

print "hello"

或者任何“print”语句时,cron任务会运行,但在20到30秒后就结束了。如果我去掉任何“print”语句,cron就能正常运行这些任务,不会中断。

我想解决这个问题,让脚本即使有“print”语句也能继续运行。有没有什么建议可以帮我?

附注:在“调度器”中,我使用

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

来运行所有其他的Python脚本。

1 个回答

6

我觉得这个问题可能和 cron 处理输出的方式有关。你是怎么重定向输出的呢?

来自 http://aplawrence.com/BDD/bbcronbasics.html 的内容:

输出

通常,任何程序的输出都会发送到标准输出(STDOUT),然后通常会显示在某个人的屏幕上。但是,对于由 cron 启动的任务,标准输出会被发送到本地的邮件系统,这意味着 cron 任务生成的任何输出都会通过邮件发送给拥有这个任务的用户。如果你不想这样,你应该把 cron 任务的输出重定向到一个文件里。还建议你把标准错误(STDERR)也重定向到一个文件,这样可以分析你 cron 任务执行时出现的任何异常情况。

撰写回答