У меня есть работа crontab, которая работает ежечасно. Иногда он уходит рано, без объяснения причин, или повода, которые я могу различить. Что может быть проблемой? Что может помочь мне копнуть глубже?crontab job иногда уходит без объяснения
Контекст Ubuntu 12.04.3 LTS. SHELL is/bin/bash.
Определение работы в настоящее время:
59 * * * * set -x; set +e; cd ~/OPEN/staging-site ; /usr/local/bin/p4 sync -q ; bin/publish.py ...
("набор" s является частью моей текущей работы отладки).
В результате по электронной почте, когда это не удается, с некоторыми заголовками обрезки, является:
From: Cron Daemon <[email protected]>
To: "Repenning, Jack" <[email protected]>
Content-Class: urn:content-classes:message
Date: Fri, 17 Jan 2014 14:57:01 -0600
Subject: Cron <[email protected]> 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
. Нет таких следов.
Я знаю, что API Perforce возвращает ошибку для некоторых вещей, которые никакое рациональное существо не учитывало бы ошибки (например, «вы запросили синхронизацию, но были уже синхронизированы»). Это, похоже, не распространяется на командную строку, которая в этом случае возвращает no-error (0). Но, черт возьми, я попробовал set +e
в случае, если такой ложный возврат ошибки остановил скрипт. Нет помощи.
Сценарий bin/staging
заботится о $ PATH и таких мелочах, которые требуются cron, но, конечно же, он даже не запускается, так что его нет ни здесь, ни там.
UPDATE: Сценарий исполняемым:
> 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 вместо относительного пути? –
Got no/var/log/cron./var/log/syslog записывает запуск команды, но никаких признаков успеха или неудачи я не вижу: – jackr
Добавьте это к концу своей cronjob: '> /tmp/mylog.txt 2> & 1' и посмотрите, что вы получаете , –