Cron

如何使用帶有 Cron 選項卡的 TimeZone

  • November 6, 2020

我在特定日期執行工作

$$ 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

引用自:https://serverfault.com/questions/848829