如何让 cron 使用 UTC?

如何让 cron 使用 UTC?

我的本地时区不是 UTC;如何让 cron 使用 UTC 来安排其日程,而不在其他方面更改计算机上的时区?

答案1

有可能在实施croniecron

man cron

可以对 crontables 使用不同的时区。有关详细信息,请参阅 crontab(5)。

man 5 crontab,

CRON_TZ 变量指定 cron 表特定的时区。用户应根据指定的时区在表中输入时间。用于写入日志文件的时间取自守护程序运行的本地时区。

如果要为整个 cron 文件指定时区,可以将时区设置为CRON_TZ=UTC或 列出的任何其他时区 timedatectl list-timezones。这将在当时运行该命令UTC,但命令中使用的时间将使用您的标准时区。

如果要在命令中引用时间,则需要在命令/脚本前面加上前缀/usr/bin/env TZ=UTC

答案2

您可以使用TZ环境变量设置时区。如果您的系统基于systemd,则您可以更改该cron.service文件并仅为该服务设置变量。

例如对于 Debian/usr/lib/systemd/system/cron.service添加

Environment="TZ=UTC"

[Service]- 部分 EnvironmentFile=已被读取(以确保所述文件不会重置值)。重新加载守护进程并重新启动cron.service

在 Debian 11 上测试。

相关内容