Я выполняю задание в определенную дату [время клиента не по местному времени], чтобы отправить электронное письмо моим клиентам. Я использую задание cpanel cron, я пытался использовать задание cron с часовым поясом
но он все еще отправляется в моем часовом поясе
32 16 08 05 * /usr/bin/curl CRON_TZ=Africa/Algiers https://www.example.com/SendCron.php?CronID=382 #CronID382END # z93v66
что не так я сделал, используя Cron_TZ ??
Ваш 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