我已经在服务器上配置了时区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_TZ
中TZ
应该从系统时间配置中为计划添加一些“独立性”。
我在这里做错了什么?为什么 crontab 中的计划与配置的时区不相关timedatectl
。
我在 AWS 上使用 debian。
答案1
Debian 上没有 CRONT_TZ。
当你查看手册页时,man 5 crontab
你可以找到以下内容:
cron 守护进程以定义的时区运行。它目前不支持每个用户的时区。所有任务:系统任务和用户任务都将基于配置的时区运行。即使用户在其 crontab 中指定 TZ 环境变量,这也只会影响 crontab 中执行的命令,而不会影响 crontab 任务本身的执行。
您需要做的是将时间设置为服务器“布达佩斯”上定义的时区。您可以使用此在线工具来计算正确的时间