為什麼 crontab 使用與我的本地時區不同的時區?

為什麼 crontab 使用與我的本地時區不同的時區?

我的 crontab 看起來像

PATH=/RunCloud/Packages/apache2-rc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

# some commands here

date終端機的輸出是Sun 11 Sep 2022 03:00:00 PM CEST 我設定了一個 cron5 3 * * * echo date > /home/time.txt但它不會在伺服器時間 03:00 運行

為了測試 crontab 及其時區,我做了

* * * * * echo date > /home/time.txt 

它運行成功並且輸出相同的時間/時區,就像我date在終端機中鍵入命令一樣

這意味著我的 cron 語法是正確的,並且 crontab 和終端的時區是相同的,那麼可能有什麼問題呢?

的輸出lsb_release

Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:        20.04
Codename:       focal

的輸出timedatectl

               Local time: Sun 2022-09-11 15:44:51 CEST
           Universal time: Sun 2022-09-11 13:44:51 UTC
                 RTC time: Sun 2022-09-11 13:44:50
                Time zone: Europe/Berlin (CEST, +0200)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

答案1

您可以將其放在 crontab 的頂部來解決此問題:

CRON_TZ=Europe/Berlin

您也可以驗證您的/etc/localtime設定是否正確:

ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime

至於為什麼,我不確定,我相信其他用戶很快就會出現並為您提供更多幫助(如果這不能解決問題)。

相關內容