我的本地时区不是 UTC;如何让 cron 使用 UTC 来安排其日程,而不在其他方面更改计算机上的时区?
答案1
有可能在实施cronie
的cron
。
每man cron
:
可以对 crontables 使用不同的时区。有关详细信息,请参阅 crontab(5)。
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 上测试。