【问题标题】:How to set a different time zone for a SPECIFIC task in crontab?如何在 crontab 中为特定任务设置不同的时区?
【发布时间】:2017-12-03 21:41:17
【问题描述】:

我需要为 crontab 添加一个新任务,该任务将在与本地机器时间不同的 TZ 中执行它。 正如您在下面的示例中看到的那样,我成功地做到了,但问题是从那时起我更改了 TZ 之后所有的工作都引用了新的 TZ

    * * * * * rubHello.sh
    0 19 * * * runKuku.sh
    CRON_TZ="Europe/Rome"
    17 13 * * * /tmp/job1.sh
    0  18 * * * /tmp/Job2.sh

在上面的示例中,job1 根据我的要求在欧洲/罗马运行,但 job2 也是 在那个时间运行,这是不行的。

有没有办法告诉 crontab 仅针对特定任务更改 TZ,并在之后的下一个作业恢复默认 crontab TZ?

谢谢。

【问题讨论】:

  • 将您的 cron 版本添加到您的问题中。
  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地点。
  • OP 使用 cronie-1.4.4-7.el6.x86_64(根据 OP 对 Martin 的回答的评论)。

标签: linux bash shell cron


【解决方案1】:

试试这个(假设你在伊斯坦布尔),CRON_TZ 变量应该在你的 cron 条目之前设置:

* * * * * rubHello.sh
0 19 * * * runKuku.sh
CRON_TZ="Europe/Rome"
17 13 * * * /tmp/job1.sh
CRON_TZ="Europe/Istanbul"  
0  18 * * * /tmp/Job2.sh

* * * * * rubHello.sh
0 19 * * * runKuku.sh
0  18 * * * /tmp/Job2.sh
CRON_TZ="Europe/Rome"
17 13 * * * /tmp/job1.sh

【讨论】:

  • 对不起,我想回到默认的 crontab TZ
  • @Asfbar 然后尝试第二个。
【解决方案2】:

我相信这应该可行:

* * * * * rubHello.sh
0 19 * * * runKuku.sh
17 13 * * * TZ="Europe/Rome" /tmp/job1.sh
0  18 * * * /tmp/Job2.sh

【讨论】:

  • 哦 :-( 你试过TZCRON_TZ吗?
  • 你有什么 cron 守护进程?
  • cronie-1.4.4-7.el6.x86_64
  • 好的,但是我怎样才能将其设置回默认值?
  • 我用(Vixie 的 cron)设置了时区测试在我的 Ubuntu 机器上设置 TZ。不确定这对您是否足够,或者您需要根据时区在不同时间实际运行命令。您可能应该接受巴巴罗斯的建议。
猜你喜欢
  • 1970-01-01
  • 2010-09-05
  • 2011-10-10
  • 2021-04-12
  • 1970-01-01
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
相关资源
最近更新 更多