Cron
如何使用帶有 Cron 選項卡的 TimeZone
我在特定日期執行工作
$$ Client time not local time $$向我的客戶發送電子郵件。我使用 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 daemon。cron 守護程序只檢查欄位是否與目前時間匹配,而不管
CRON_TZ
變數如何。systemd-croncrontab
的手冊頁解釋了這個限制:systemd-cron 單元使用定義的時區執行。它目前不支持每個使用者的時區。所有任務:系統和使用者的將根據配置的時區執行。即使使用者在其 crontab 中指定了 TZ 環境變數,這也只會影響 crontab 中執行的命令,而不影響 crontab 任務本身的執行。
如果您需要根據時區執行計劃,則必須更改伺服器時區,例如:
ln -sf /usr/share/zoneinfo/Africa/Algiers /etc/localtime