【发布时间】:2014-01-18 08:29:05
【问题描述】:
我有一个每小时运行的 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
【问题讨论】:
-
检查 /var/log/cron 以获得更多信息?也可以指定 bin/staging 的完整路径而不是相对路径?
-
没有 /var/log/cron。 /var/log/syslog 记录了命令的启动,但我看不到成功或失败的迹象:
-
将此添加到您的 cronjob 的末尾:
> /tmp/mylog.txt 2>&1看看你会得到什么。 -
和我收到的邮件一样
标签: python bash cron perforce crontab