![在不同的 TZ 中运行 cron 任务](https://linux22.com/image/657950/%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%20TZ%20%E4%B8%AD%E8%BF%90%E8%A1%8C%20cron%20%E4%BB%BB%E5%8A%A1.png)
我有几个 cron 事件需要运行,但需要在不同的时区运行。例如,我有一个事件每天在 UTC 时间 08:30 运行,另一个事件每天在 CET 时间 09:30 运行。我读过一些文章,说可以在 crontab 中通过在TZ=CET
命令前设置来设置时区,但我猜这并没有告诉 Cron 下一个事件时间设置在什么时间。这可能吗?服务器运行的是 Debian,系统时区为 UTC。
TZ=CET
* 13 * * * root date >> ~/date.log
我也尝试过,CRON_TZ=CET
但也没有用。
答案1
TZ=CET
在您的意志顶部crontab
设置从 cron 运行的作业的时区,但不会影响cron
对作业启动时间的解释。
如果要设置cron
整体时区,则添加
export TZ=CET
到/etc/sysconfig/crond
(或您的发行版的等效配置) 应该会改变 的cron
时间观念。您只需找到启动 的 init 脚本所来源的配置文件即可cron
。
看https://askubuntu.com/questions/54364/how-do-you-set-the-timezone-for-crontab对此进行更多讨论。
如果您只需要TZ
为特定作业进行设置,那么请在命令开始时进行设置。例如...
*/1 * * * * TZ=Japan date >> date.log
*/1 * * * * TZ=CET date >> date.log
*/1 * * * * date >> date.log
nph9@goat$ cat date.log
Mon May 11 22:34:01 JST 2015
Mon May 11 14:34:01 BST 2015
Mon May 11 15:34:01 CEST 2015