crontab工作偶尔会在没有解释的情况下退出

时间:2014-01-17 21:49:04

标签: python bash cron perforce crontab

我有一个每小时运行一次的crontab作业。有时它会在没有解释的情况下提前退出,或者我可以辨别出原因。可能是什么问题?什么可以帮助我深入挖掘?

上下文是Ubuntu 12.04.3 LTS。 SHELL是/ bin / bash。

目前的工作定义是:

59 * * * * set -x; set +e; cd ~/OPEN/staging-site ; /usr/local/bin/p4 sync -q ; bin/publish.py ...

(“set”是我当前调试工作的一部分。)

生成的电子邮件,如果失败,并修剪了一些标题,则为:

From: Cron Daemon <root@HERE.com>
To: "Repenning, Jack" <jrepenni@HERE.com>
Content-Class: urn:content-classes:message
Date: Fri, 17 Jan 2014 14:57:01 -0600
Subject: Cron <jrepenni@prod-akiary-app01> set -x; set +e; cd  ~/OPEN/staging-site ; /usr/local/bin/p4 sync  -q ; bin/staging
x-cron-env: <LOGNAME=jrepenni>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0

+ set +e
+ cd /u0/jrepenni/OPEN/staging-site
+ /usr/local/bin/p4 sync -q

请注意,没有提及启动bin/staging。确认这一点,可以找到副作用,例如为其工作创建一个tmp目录,即使发生bin/staging的最小执行也是如此。没有这样的痕迹。

我碰巧知道Perforce API会返回一些错误,因为某些事情没有理性存在会考虑错误(例如“您请求同步但已经同步”)。这似乎没有扩展到命令行,在这种情况下返回no-error(0)。但是,到底是什么,我尝试了set +e以防万一这样的虚假错误返回正在停止脚本。没有帮助。

脚本bin/staging负责$ PATH和类似的cron所需的细节 - 当然,它甚至没有启动,所以既不在这里也不在那里。

更新:脚本可执行:

> ll bin/staging 
-r-xr-xr-x 1 jrepenni users 251 Jan 17 11:55 bin/staging

...和shabanged:

> head -1 bin/staging
#!/bin/bash

2 个答案:

答案 0 :(得分:1)

似乎很可能事情正在发生变化,因为这是停止的地方。通过向2>&1添加p4 sync,可以将STDERR合并到您的输出中。

将代码放入脚本并反复运行可以让您以交互方式解决问题。

答案 1 :(得分:0)

嗯:要么我错过了,要么行为是可变的。

我现在看到那些外部跟踪,表明bin / staging脚本确实运行了。 Cron作业电子邮件基本停在p4行,但这似乎是一个I / O问题,而不是一个实际的执行问题。可能ssh有问题(在我们的配置中,p4通过ssh隧道与其存储库通信)。

无论发生了什么,它昨晚改变了;我一直在从bin / staging进程中获得常规输出,但突然没有。

感谢所有人,因为你的“小灰细胞”的劳动。