2014-01-17 2 views
0

У меня есть работа 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 
+0

Проверьте/var/log/cron для получения дополнительной информации, возможно? Также возможно указать полный путь к bin/staging вместо относительного пути? –

+0

Got no/var/log/cron./var/log/syslog записывает запуск команды, но никаких признаков успеха или неудачи я не вижу: – jackr

+0

Добавьте это к концу своей cronjob: '> /tmp/mylog.txt 2> & 1' и посмотрите, что вы получаете , –

ответ

1

Вполне вероятно, что вещи ломаются в-неволей, поскольку именно здесь он останавливается. Это может помочь слить STDERR в ваш вывод, добавив 2>&1 вам p4 sync.

Вставьте свой код в скрипт и запустите его несколько раз, чтобы вы могли совершить вызов в интерактивном режиме.

0

Хммм: либо я ошибаюсь, либо поведение является переменным.

Теперь я вижу эти внешние трассы, указывающие, что сценарий bin/stage выполняется. Порог электронной почты заданий Cron останавливается в строке p4, но это, похоже, проблема ввода-вывода, а не фактическое исполнение. Возможно, ssh ошибается (в нашем конфиге p4 ведет переговоры с его репозиторием через туннель ssh).

Что бы ни происходило, это изменилось прошлой ночью; Я получал регулярный выход из процесса bin/staging, и вдруг это не так.

Спасибо, все, за труд ваших «маленьких седых клеток».

Смежные вопросы