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

Запускать cron-задания в разных TZ

У меня есть несколько событий cron, которые нужно запустить, но в разных часовых поясах. Например, у меня есть одно событие, которое запускается каждый день в 08:30 UTC, а другое событие - каждый день в 09:30 CET. Я читал несколько статей о том, что часовой пояс можно установить в crontab, установив TZ=CET перед командой, но я предполагаю, что это не сообщает Cron, в какое время установлено следующее время события. Это вообще возможно? На сервере работает Debian с системным часовым поясом в формате UTC.

TZ=CET
* 13    * * *   root    date >> ~/date.log

Я также пробовал CRON_TZ=CET но это тоже не работает.

TZ=CET

в верхней части вашего crontab установит часовой пояс для заданий, запускаемых из cron, но не повлияет cronинтерпретация времени начала работы.

Если вы хотите установить часовой пояс для cron в целом, затем добавив

export TZ=CET

к /etc/sysconfig/crond (или там, где эквивалентная конфигурация для вашего дистрибутива) должна измениться cronпредставление о времени. Вам просто нужно найти файл конфигурации, источником которого является запускающий сценарий инициализации. cron.

Видеть https://askubuntu.com/questions/54364/how-do-you-set-the-timezone-for-crontab для более подробного обсуждения этого.

Если вам просто нужно установить TZ для определенных заданий установите его в начале команды. Например ...

*/1 * * * *       TZ=Japan date >> date.log
*/1 * * * *       TZ=CET date >> date.log
*/1 * * * *       date >> date.log

nph9@goat$ cat date.log
Mon May 11 22:34:01 JST 2015
Mon May 11 14:34:01 BST 2015
Mon May 11 15:34:01 CEST 2015