Linux

為什麼 crontab 中的時區設置對計劃沒有影響?

  • July 28, 2022

我已經在伺服器上配置了我的時區timedatectl,例如:

timedatectl set-timezone Europe/Budapest

我已將時區設置添加到我的 crontab 配置中,如下所示:

CRON_TZ=America/Cancun
0 12 * * *  echo "not scheduled in time"

# or

TZ=America/Cancun
0 12 * * *  echo "not scheduled in time"

# or

0 12 * * *  TZ=America/Cancun echo "not scheduled in time"

但無論我嘗試在 crontab(美國/坎昆)中設置什麼 TimeZone 配置,作業總是由timedatectl(歐洲/布達佩斯)配置的時區安排。我什至重新啟動了 cron 服務:

sudo service cron restart

我會假設CRON_TZTZ在 crontab 中應該從系統時間配置中添加一些“獨立性”到計劃中。

我在這裡做錯了什麼?為什麼 crontab 中的計劃與timedatectl.

我在 AWS 上使用 debian。

debian 上沒有 CRONT_TZ。

當您檢查手冊頁時,man 5 crontab您可以找到以下內容:

cron 守護程序使用定義的時區執行。它目前不支持每個使用者的時區。所有任務:系統和使用者的將根據配置的時區執行。即使使用者在其 crontab 中指定了 TZ 環境變數,這也只會影響 crontab 中執行的命令,而不影響 crontab 任務本身的執行。

您需要做的是將時間設置為伺服器“布達佩斯”上定義的時區。您可以使用此線上工具來計算正確的時間

https://www.epochconverter.com/timezones

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