tomcat时区设置问题

最近碰到一个很奇怪的问题,两台一模一样的机器,一样的时间,一样的时区,一样的tomcat,一样的代码。但是tomcat在两台机器上获取到的时间就是不一样,不仅不一样,其中一个的tomcat时间跟系统时间还不一致。

最开始试着通过修改catalina.sh把两个tomcat的时区都改为GMT,结果得到的时间还是不一样:

JAVA_OPTS="-mx1600M -Duser.timezone=GMT"

后来把tomcat的时区改为:

JAVA_OPTS="-mx1600M -Duser.timezone=Europe/London"

突然发现这个时候这台tomcat时间与系统时间一向不一致的机器,这个时候tomcat时间突然跟系统时间一致了,而另一台一直直一致的现在却不一致了(系统用的时区是BST,开始改GMT时区时没看出来)。

这个时候我才突然想到,tomcat读取的可能是硬件时间(BIOS时间),而这两台机器很有可能一台设置了使用UTC时间一台设置了不使用UTC时间。遂查看配置文件/etc/sysconfig/clock,果然如此。

修改成一致的设置,重启,果然正常了。

ubuntu系统时间设置问题

忘了当初装系统的时间是怎么选择时间设置的了,反正现在ubuntu的时间比较怪,用hwclock –show查看,总是比实际时间快了八个小时,这样的话,总是导致在ubuntu与windows之间切换时很是头痛,时间跳来跳去,得不到统一。

后来实在没办法,用hwclock –local –hctosys 给ubuntu读入时间,然后,再次/etc/default/rcS里面的那一行UTC=yes改为了UTC=no,这下子重启总算没事了。

估计原因可能是当初在装系统时,将硬件(BIOS)时间设成了UTC时间,而那万恶的windows却没有这个功能,这才导至时间老是跳来跳去,将/etc/default/rcS时间的那一行改了,就是让系统把硬件(BIOS)时间当成本地时间 。

如果是RedHat系列,那么就要修改这个文件:/etc/sysconfig/clock。把其中的UTC=true改为UTC=false

关于如何修改ubuntu的时间,可以参看我的一篇译文:
如何Linux下修改系统时间