不同时区的 Cron 作业

问题描述 投票:0回答:6

有没有办法为特定时区设置 cronjob?

我的共享主机位于美国(弗吉尼亚州),我在英国。如果我设置一个 cron 作业在每周五 1600 点执行,那么它将在弗吉尼亚州 1600 点执行。

我想知道是否可以设置我的 cronjob 以使其了解选择哪个时区。我不太担心夏令时的差异。

我已经询问了我的共享托管提供商,他们说我应该能够在一些 cron ini 文件中设置时区,但我找不到任何内容。

cron controlpanel
6个回答
19
投票

我认为你应该检查一下

/etc/default/cron

或者直接输入

Crontab cronfile

你应该会发现

TZ=UTC

这应该更改(例如 America/New_York)。第二种方式是在 cron 示例中设置的

5 2 3 * * TZ="America/New_York" /do/command > /dev/null 2>&1

16
投票

您可以在 CentOS 6 服务器上使用

CRON_TZ
环境变量,摘自
man 5 crontab

CRON_TZ
指定 cron 表特定的时区。 用户在指定的时间内在所选表中输入时间 时区。日志中的时间取自本地时区,其中 守护进程正在运行。

因此,如果您将其添加到

cron
条目的顶部:

CRON_TZ=Europe/London

你应该很好。


6
投票

如果您想为特定的 cronjob 设置不同的时区,请通过 ssh 执行

crontab -e
并添加

TZ=Europe/Moscow

在每个 cronjob 之前。

完整文章在这里


2
投票

扩展 AlexT 的答案:

CRON_TZ="Europe/London"

就是答案。

附注如果有人在这里寻找 GoDaddy 的时区修复,我建议放置...

export TZ="Europe/London"

...在您的 .bashrc 中,以便您的控制台在您的时区运行。


2
投票

在 Ubuntu 18.08 上

host@machine$crontab -e

然后输入

TZ=Asia/Kolkata 

注意:- 将亚洲/加尔各答替换为您想要的时区


0
投票

我无法在 Ubuntu 22.04 上使用 CRON_TZ 让它工作。最后我更改了系统时区并重新启动了 cron。

sudo timedatectl set-timezone Asia/Kolkata
sudo systemctl restart cron

我花了很多时间调试才发现更改时区后应该重新启动 cron。

© www.soinside.com 2019 - 2024. All rights reserved.