处理多个时区的 cron 替代品

mgr*_*ray 9 linux daylight-saving cron timezone

我正在寻找一种 cron 替代品(如果可能的话,或者在 cron 中寻找一种方法),它可以允许在任意数量的时区(特别是每个用户/文件一个以上)中安排作业。我想要的是能够为每个作业(或 cron 行)指定一个时区,然后只指定本地时区的时间。我注意到我可以更改 cron 运行的整个时区,但在一天结束时它只能在一个时区运行。

我目前的解决方案是将我的所有时间转换为 GMT 并相应地运行作业,唯一的问题是在夏令时转换周期间,必须进行许多手动编辑以确保在相应的本地时区正确运行(例如某些地区不遵循夏令时,或者它们不会在同一日期更改)。

对此有何想法?

小智 6

fcron支持此功能。

fcrontab(5) 中“时区”选项的文档中:

在给定的时区运行作业。timezone-name 是一个对环境变量 TZ 有效的字符串:有关更多详细信息,请参阅系统文档。例如,“Europe/Paris”在 Linux 系统上有效。此选项正确处理夏令时更改。当定义此选项的作业运行时,TZ 环境变量设置为 timezone 的值。


Den*_*son 3

我认为你试图两全其美,但现实是你做不到。例如,如果您希望作业在当地时间上午 8 点运行,无论夏令时是否处于活动状态,那么您要么在当地时间运行系统(和 cron)并且不进行季节性编辑,要么在 UTC 中运行(非 GMT)并进行季节性编辑。如果您希望作业在相同的 UTC 下运行,则无论如何,您都可以根据 UTC 运行 cron,并且无需执行更多操作。

如果您想要的是用户能够根据他的本地时区安排 cron 作业,而不是让他为了方便而考虑转换,那么您可以编写一个接受 cron 规范和时区的转换脚本,然后在幕后转换为 UTC 并为他编辑 crontab。它甚至可以是双向转换来处理现有条目的更改。

如果您告诉我们您实际上想要实现什么目标,将会很有帮助。