Назад | Перейти на главную страницу

Какой лучший способ устранить неполадки в cron, который не запускается?

Продолжая с вопрос о Stackoverflow, У меня есть .sh, который пытается (1) запустить сценарий, который устанавливает переменные среды, а затем (2) запускает сценарий php.

Запись crontab (пробовали с и без >> вывод):

 */1 * * * * /home/user/public_html/domain.com/private/ec2-api-tools/php/doQueue.sh >> /home/user/output.txt

Скрипт doQueue.sh (запуск вручную работает):

#/bin/sh
. ./environment.sh
php process_queue.php

Environment.sh (опять же, работает вручную):

#!/bin/sh
echo "running environment"
PATH=$EC2_HOME/bin:$PATH
EC2_HOME=/home/user/public_html/domain.com/private/ec2-api-tools
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/user/public_html/domain.com/private/ec2-api-tools/bin
MAIL=/var/mail/root
PWD=/home/user/public_html/domain.com/private/ec2-api-tools
JAVA_HOME=/usr/lib/jvm/java-6-sun/jre/
LANG=en_US.UTF-8
EC2_PRIVATE_KEY=/home/user/public_html/domain.com/private/ec2-api-tools/pk-hash.pem
EC2_CERT=/home/user/public_html/domain.com/private/ec2-api-tools/cert-hash.pem

Я пробовал варианты с использованием sh и . но безрезультатно. Как лучше всего решить эту проблему?

Убедитесь, что файл crontab заканчивается новой строкой

Это в /var/spool/cron/crontabs/ или /etc/cron.d/ (последнее требует, чтобы пользователь запускал задание как)?

Вы пытались поместить операторы отладки в doQueue.sh, чтобы получить какой-то вывод, чтобы убедиться, что он работает?

#/bin/sh
. ./environment.sh

!

А что такое CWD при запуске скрипта? Попробуйте указать абсолютный путь к environment.sh

Это объясняет, почему задание cron на самом деле не работает, но не почему оно вообще никогда не запускается.

По умолчанию cron отправляет локальному пользователю почту с выводом заданий и сообщений об ошибках - вы это проверили?

Вы уверены, что задание существует в файле cron? (т.е. что вы видите, когда вводите crontab -l в командной строке).

HTH

С.