linux时间跳变影响,Linux起用夏令时,跳变后导致容器日志时间和系统时间相差一小时...

Linux启用夏令时,跳变后导致容器日志时间和系统时间相差一小时

日志时间与系统时间相差一小时解决方案

一、 分析

2007年10月分,夏令时曾经做更改,2007年与之前发布的jdk版本均有此问题,2007年后发布的jdk版本不会出现此bug。一线版本jdk为1.5是2004年发布的,通常升级jdk风险太多,所以用以下方法升级时区文件来解决此问题。

已在SUSE Linux Enterprise server 11上测试通过。

参考资料:http://www.oracle.com/cn/technologies/java/tzupdater-readme-136440.html

时区更新下载:http://www.oracle.com/technetwork/java/javase/downloads/tzupdater-download-513681.html

二、 描述

模拟一线的情况成功,与一线的情况相同,在入夏令时和出夏令时会出现时间不能自动调整的问题。

三、 解决步骤

1、修改时区文件

使用root用户更改 /etc/sysconfig/clock

TIMEZONE="Asia/Tehran"

UTC="yes"

DEFAULT_TIMEZONE="Asia/Tehran"

文件描述:TIMEZONE="Asia/Tehran" 表示时区设置为Iran的时区

UTC="yes" 表示启用UTC时间,这样jdk才可以从系统获取正确的时间,必须启用

DEFAULT_TIMEZONE="Asia/Tehran" 默认时区

2、更新jdk时区信息

使用tzupdate.jar 更新jdk的时区信息,注意此时必须要停止所有可能使用jdk的进程,否则会导致升级失败,建议重启系统后升级,保证升级成功

1、下载tzupdate.jar到系统中

2、解压tzupdate.jar

unzip tzupdater-1_3_42-2011k.zip

3、验证版本信息(注意大小写)

java -jar tzupdate.jar –V

如果输出:The Java runtime doesn''t have time zone data (zi directory).

或者

tzupdater version 1.3.42-b02

JRE time zone data version: tzdata2005i

Embedded time zone data version: tzdata2011k

JRE time zone data 的版本是2007以前的,则表示时区信息没有升级到最新,可以继续升级操作

4、升级jdk时区信息

java -jar tzupdate.jar –u

没有任何输出则升级成功

5、测试升级是否成功,无任何输出则升级成功

java -jar tzupdate.jar –t

没有任何输出,则zone data文件验证通过

6、可检查升级后时区版本

java -jar tzupdate.jar –V

输出

tzupdater version 1.3.42-b02

JRE time zone data version: tzdata2011k

Embedded time zone data version: tzdata2011k

则表示升级成功。

3.保证以上步骤没有错误后,调整系统时间,重启操作系统,启动MOS5200系统。检查日志是否与操作系统时间一致。如果时间一致,升级成功。

升级碰到的一些问题

1. 升级后验证版本时输出

tzupdater version 1.3.42-b02

JRE time zone data version: tzdata2005i

There's no tzdata available for this Java runtime.

而前面操作没有报错,这是因为你的jdk还有进程在访问,导致升级失败,重启操作系统后执行之前操作就可以升级成功了。

2. 升级后系统时间跟日志时间相差3:30

因为jdk没有获取到正确的时区信息,给jboss的启动文件/opt/netwatcher/pm4h2/app/opt/jboss-report/bin/run.sh中添加启动参数

set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name=%PROGNAME% -Duser.timezone=Asia/Tehran

具体位置加在62行左右,不能再if分支里,保证run.sh一定会执行这句。

重启web容器后就可以获取到正确时区,日志时间会跟随夏令时一起跳变。

3. 测试时输出

The Java runtime doesn''t have time zone data (zi directory).

表示没有升级上去。

1 楼

陈碧滔

2012-01-29

Jdk 发布时间表

版本号 名称 中文名 发布日期

JDK 1.1.4 Sparkler 宝石 1997-09-12

JDK 1.1.5 Pumpkin 南瓜 1997-12-13

JDK 1.1.6 Abigail 阿比盖尔--女子名 1998-04-24

JDK 1.1.7 Brutus 布鲁图--古罗马政治家和将军 1998-09-28

JDK 1.1.8 Chelsea 切尔西--城市名 1999-04-08

J2SE 1.2 Playground 运动场 1998-12-04

J2SE 1.2.1 none 无 1999-03-30

J2SE 1.2.2 Cricket 蟋蟀 1999-07-08

J2SE 1.3 Kestrel 美洲红隼 2000-05-08

J2SE 1.3.1 Ladybird 瓢虫 2001-05-17

J2SE 1.4.0 Merlin 灰背隼 2002-02-13

J2SE 1.4.1 grasshopper 蚱蜢 2002-09-16

J2SE 1.4.2 Mantis 螳螂 2003-06-26

J2SE 5.0 (1.5.0) Tiger 老虎 2004-10

J2SE 5.1 (1.5.1) Dragonfly 蜻蜓 未发布

J2SE 6.0 (1.6.0) Mustang 野马 2006-04

J2SE 7.0 (1.7.0) Dolphin 海豚 2011-7-28

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值