为什么 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 我设置了一个 cron 5 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

至于原因,我不确定,如果这不能解决问题,我相信其他用户很快就会来并为您提供更多帮助。

相关内容