Как использовать 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