Как использовать TimeZone с вкладкой Cron

Я запускаю задание в определенную дату [время клиента, а не по местному времени], чтобы отправить электронное письмо своим клиентам. Я использую cpanel cron job, я пытался использовать cron job с часовым поясом

но это все еще отправка в моем местном часовом поясе

32 16 08 05 *  /usr/bin/curl CRON_TZ=Africa/Algiers https://www.example.com/SendCron.php?CronID=382 #CronID382END # z93v66 

что неправильно я сделал с помощью Cron_TZ??

1 ответ

Решение

Ваш CRON_TZ= находится в неправильном месте в вашем crontab файл, как атрибут опции для /usr/bin/curl,

Вместо этого вы должны установить ее как переменную окружения перед записями cron:

CRON_TZ=Africa/Algiers 

32 16 08 05 *  /usr/bin/curl https://www.example.com/SendCron.php?CronID=382

Если вам нужно установить часовой пояс для одной записи cron на одной и той же строке, это невозможно с CRON_TZ переменная окружения, но вам нужно вызвать внешний env (запустить программу в измененной среде), чтобы изменить TZ:

32 16 08 05 * /usr/bin/env TZ=Africa/Algiers /usr/bin/curl https://www.example.com/Send...

Обратите внимание, что оба изменяют часовой пояс для команды, а не для демона cron. Демон cron просто проверяет, соответствуют ли поля текущему времени или нет, независимо от CRON_TZ переменная. Страница руководства для systemd-cron crontab объясняет это ограничение:

Устройства systemd-cron работают с определенным часовым поясом. В настоящее время он не поддерживает часовые пояса для каждого пользователя. Все задачи: система и пользователь будут запускаться на основе настроенного часового пояса. Даже если пользователь указывает переменную окружения TZ в своем crontab, это повлияет только на команды, выполняемые в crontab, а не на выполнение самих задач crontab.

Если вам нужно запустить расписания на основе часового пояса, вы должны изменить часовой пояс сервера, например:

ln -sf /usr/share/zoneinfo/Africa/Algiers /etc/localtime
Другие вопросы по тегам