时区感知cron作业(针对DST进行调整)

时区感知cron作业(针对DST进行调整),cron,timezone,Cron,Timezone,我需要从世界各地下载文件到同一台服务器。这些文件在本地时区中每天的同一时间可用。挑战在于夏令时。因为不同的国家在不同的日子进行调整,而有些国家根本不进行DST,所以任何两个时区之间的偏移量在一年中都会发生变化。所以不可能把所有的东西都转换成一个时区。有没有办法用cron处理这个问题?或者类似于cron的东西 我已经试过了,但它确实做了而不是我想做的事: TZ=Asia/Tokyo 05 15 * * * echo $(date) JAPAN >> /tmp/crontest1.txt

我需要从世界各地下载文件到同一台服务器。这些文件在本地时区中每天的同一时间可用。挑战在于夏令时。因为不同的国家在不同的日子进行调整,而有些国家根本不进行DST,所以任何两个时区之间的偏移量在一年中都会发生变化。所以不可能把所有的东西都转换成一个时区。有没有办法用cron处理这个问题?或者类似于cron的东西

我已经试过了,但它确实做了而不是我想做的事:

TZ=Asia/Tokyo
05 15 * * * echo $(date) JAPAN >> /tmp/crontest1.txt 2>&1
TZ=Europe/London
05 15 * * * echo $(date) LONDON >> /tmp/crontest2.txt 2>&1
TZ=America/New_York
05 15 * * * echo $(date) NY >> /tmp/crontest3.txt 2>&1
TZ=America/Denver
05 15 * * * echo $(date) DENVER >> /tmp/crontest4.txt 2>&1
在服务器的时区中,所有内容都在15:05运行,输出为

Fri Mar 24 04:05:01 JST 2017 JAPAN
Thu Mar 23 19:05:01 GMT 2017 LONDON
Thu Mar 23 15:05:01 EDT 2017 NY
Thu Mar 23 13:05:01 MDT 2017 DENVER

因此,虽然每个进程在正确设置TZ值的情况下运行,但它在主服务器运行时运行。我需要一些调整DST开始时间的工具。

不确定您是否可以这样做。如果每小时启动一个脚本,并在参数中包含时区,然后检查您的脚本是否适合该时区?请不要在UTC之外的任何时间设置服务器,否则会导致诸如您的时区之类的问题。如果你不能改变这些服务器到UTC,考虑从拉到推改变你的方法。服务器在UTC中,但是这没有帮助。它从世界各地不使用UTC的第三方收集数据。因此,进程启动器仍然需要知道时区和DST。我不确定这在正常的cron实现中是否可行,但似乎有一个类似的功能。。。