设为首页收藏本站

追梦Linux

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 374|回复: 1

linux系统和tomcat日志时区不一致问题

[复制链接]

482

主题

485

帖子

16万

积分

CEO

Rank: 9Rank: 9Rank: 9

积分
167821

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2017-1-19 11:36:34 | 显示全部楼层 |阅读模式
   近期公司服务器中使用其他时区的一台服务器上的tomcat启动后,获取的时间和服务器的时间不一致,导致获取时间的相关程序出现时间错误。
为了这个问题,我查找了linux系统中的所有关于时区设置的地方,没有发现有任何问题,重启服务器也没有解决这个问题。
最后经过与相关人员讨论后,我们认为有可能是JVM中的时区和linux系统的时区不一致导致的,检查JVM中的时区。后来搜了下发现了这条命令:
[Bash shell] 纯文本查看 复制代码
#java -XshowSettings:all
或
#java -XshowSettings:local
可以查看JVM中的设置,服务器在这个设置中有关时区的地方为:
user.timezone=
竟然是空的。
我在网上查找了JVM设置时区的问题,找到如下解决办法:
修改tomcat/bin/catalina.sh文件
在文件的开头添加如下内容:(一般中国用的是东八区CST)
[Bash shell] 纯文本查看 复制代码
export JAVA_OPTS="$JAVA_OPTS -Duser.timezone=时区"
将上面的时区修改为相应的即可,例如:Asia/shanghai
或者
[Bash shell] 纯文本查看 复制代码
export JAVA_OPTS="$JAVA_OPTS  -Duser.timezone=GMT+08"

然后重启服务器后,问题解决。

现在回顾一下,我认为,这个问题应该是JVM获取时区时,应该是获取的自己设置的时区,而不是获取的系统的时区,不知道这个是否正确,只是作为一个已经解决的问题记录于此,仅供参考。

0

主题

1

帖子

68万

积分

CEO

Rank: 9Rank: 9Rank: 9

积分
688919
发表于 2017-7-19 11:14:55 | 显示全部楼层
docker也会有这个问题在ubuntu16 在ubuntu14上我测试没发现这个问题,在ubuntu16上可以这么解决,在启动的时候加上 -v /etc/localtime:/etc/localtime  -v /etc/timezone:/etc/timezone即可

QQ|小黑屋|手机版|Archiver|追梦Linux ( 粤ICP备14096197号  点击这里给我发消息

GMT+8, 2018-10-21 13:38 , Processed in 0.240951 second(s), 36 queries .

Powered by 追梦Linux! X3.3 Licensed

© 2015-2017 追梦Linux!.

快速回复 返回顶部 返回列表