为什么 crontab 中的时区设置对计划没有影响?

为什么 crontab 中的时区设置对计划没有影响?

我已经在服务器上配置了时区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 中尝试设置什么时区配置(美国/坎昆),作业总是按照timedatectl(欧洲/布达佩斯)配置的时区进行安排。我甚至重新启动了 cron 服务:

sudo service cron restart

我认为crontabCRON_TZTZ应该从系统时间配置中为计划添加一些“独立性”。

我在这里做错了什么?为什么 crontab 中的计划与配置的时区不相关timedatectl

我在 AWS 上使用 debian。

答案1

Debian 上没有 CRONT_TZ。

当你查看手册页时,man 5 crontab你可以找到以下内容:

cron 守护进程以定义的时区运行。它目前不支持每个用户的时区。所有任务:系统任务和用户任务都将基于配置的时区运行。即使用户在其 crontab 中指定 TZ 环境变量,这也只会影响 crontab 中执行的命令,而不会影响 crontab 任务本身的执行。

您需要做的是将时间设置为服务器“布达佩斯”上定义的时区。您可以使用此在线工具来计算正确的时间

https://www.epochconverter.com/timezones

相关内容