有没有办法为特定时区设置 cronjob?
我的共享主机位于美国(弗吉尼亚州),我在英国。如果我设置一个 cron 作业在每周五 1600 点执行,那么它将在弗吉尼亚州 1600 点执行。
我想知道是否可以设置我的 cronjob 以使其了解选择哪个时区。我不太担心夏令时的差异。
我已经询问了我的共享托管提供商,他们说我应该能够在一些 cron ini 文件中设置时区,但我找不到任何内容。
我认为你应该检查一下
/etc/default/cron
或者直接输入
Crontab cronfile
你应该会发现
TZ=UTC
这应该更改(例如 America/New_York)。第二种方式是在 cron 示例中设置的
5 2 3 * * TZ="America/New_York" /do/command > /dev/null 2>&1
您可以在 CentOS 6 服务器上使用
CRON_TZ
环境变量,摘自 man 5 crontab
:
指定 cron 表特定的时区。 用户在指定的时间内在所选表中输入时间 时区。日志中的时间取自本地时区,其中 守护进程正在运行。CRON_TZ
因此,如果您将其添加到
cron
条目的顶部:
CRON_TZ=Europe/London
你应该很好。
扩展 AlexT 的答案:
CRON_TZ="Europe/London"
就是答案。
附注如果有人在这里寻找 GoDaddy 的时区修复,我建议放置...
export TZ="Europe/London"
...在您的 .bashrc 中,以便您的控制台在您的时区运行。
在 Ubuntu 18.08 上
host@machine$crontab -e
然后输入
TZ=Asia/Kolkata
注意:- 将亚洲/加尔各答替换为您想要的时区
我无法在 Ubuntu 22.04 上使用 CRON_TZ 让它工作。最后我更改了系统时区并重新启动了 cron。
sudo timedatectl set-timezone Asia/Kolkata
sudo systemctl restart cron
我花了很多时间调试才发现更改时区后应该重新启动 cron。