Я пытался устранить многие из распространенных ошибок,
обеспечение доступности PATH для cron
есть конец строки в конце файла crontab
часовой пояс устанавливается:
cd /etc cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
Запустив date
в bash, я получаю:
Tue Sep 17 15:14:30 SGT 2013
Чтобы проверить, использует ли cron то же самое время,
* * * * * date >> date.txt
дает ту же дату вывода в date.txt.
Это скрипт, который я пытаюсь выполнить:
event.sh
:
#!/usr/bin/env bash
echo data > /root/data.txt
Используя crontab -e
строку ниже,
* * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
15 * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
Однако, когда я попробовал некоторые другие аргументы, надеясь, что это будет работать в 14:30:
50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
или
50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)
это больше не будет работать. Кажется, есть проблема с моим аргументом часа. Ничего не может быть найдено в /tmp/debug.log
файле либо.
РЕШЕНИЕ:
Оказалось, я должен перезапустить службу cron после внесения изменений в TZ.
* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
* * * * * date
и подтвердите, что date
показывает ожидаемое время. Обратите внимание , что установка переменной окружения TZ внутри кронтаб не может повлиять на часовой пояс , используемый хрон демон сам по себе, но это будет влиять на процессы , запущенные через хрон, так что если вы установите TZ в вашем кронтаб я предложил бы комментировать это временно и установка времени с использованием часового пояса системных часов (вероятно, UTC, если вы используете Linux с единственной загрузкой, но, возможно, это местное время).
~/event.sh
с/home/username/event.sh