马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
媒介:
近来把项目部署到Linux服务器上遇到了日志输出时间不准的问题,通过参考资料一顿操纵下来终于解决了。在查找资料的过程中,发现许多文章不全面,于是决定本身写一篇;此文章是在融合多家之长的基础上加上本身的总结,盼望能帮助大家快速解决问题。
问题:
通常情况下,我们会遇到linux体系时区与其上部署的tomcat时区差别等的问题。最常见的是体系时间为正常的CST中国尺度时区(东八区),而tomcat日志时间却比体系时间慢了8个小时
概念先容
在解决问题之前,我们首先要弄清几个概念,在Linux上有几个时间概念:
一、“体系时间”与“硬件时间”
体系时间: 一般说来就是我们执行 date 命令看到的时间,linux体系下所有的时间调用(除了直接访问硬件时间的命令)都是利用的这个时间。
硬件时间: 主板上BIOS中的时间,由主板电池供电来维持运行,体系开机时要读取这个时间,并根据它来设定体系时间(留意:体系启动时根据硬件时间设定体系时间的过程大概存在时区换算,这要视具体的体系及相关设置而定)。
二、查看体系时间和硬件时间
1. 体系时间 date
直接调用 date,得到的是当地时间。假如想得到UTC时间的话,利用 date -u。
2. 硬件时间 hwclock
直接调用 hwclock。
三、体系时间和硬件时间的同步
同步体系时间和硬件时间,可以利用hwclock命令。
//以体系时间为基准,修改硬件时间
hwclock –systohc <== sys(体系时间)to(写到)hc(Hard Clock)
//以硬件时间为基准,修改体系时间
hwclock –hctosys
解决问题
步调一:预备工作
在将解决问题之前,首先要确定体系当前时间是正确的。这里可以通过linux的date命令查看当前时间实时区。
1. 假如效果与当地时间或本身想要的效果划一
这种情况可以确定问题是出在tomcat上。可以通过步调二中所列方法举行解决。
2. 假如效果与当地时间或本身想要的效果差别等
这种情况需要先将体系校正为正确的时区,再通过步调二的方法解决。具体操纵如下:
(1)修改时区,以我们利用的北京时间(东八区)为例
输入:tzselect
1、选择洲
2、选择国家
3、选择时间并确认
4.将时区信息添加为环境变量TZ
操纵步调:
# 编辑配置文件
# 添加如下信息
- export TZ="Asia/Shanghai"
复制代码 # 使配置见效
(2)修改完时区后,再次利用date命令查看体系时间是否正确
解决了体系时区不正确问题后,假如体系时间和tomcat日志时间仍旧差别等,则是tomcat启动时读取时区配置造成的定位到是JVM问题。
步调二:体系时区与Tomcat时区(JVM)差别等的解决方法
方法一(不保举):就是在启动jar包的命令中添加时区参数
java -jar -Duser.timezone=GMT+08 xxx.jar
但是这是一个临时解决方案, 每次启动都需要添加时区参数, 会很麻烦,。
方法二(保举):修改/etc/sysconfig/clock配置信息
linux中,JRE每次都从/etc/sysconfig/clock配置文件中获取时区信息,以是可以编辑/etc/sysconfig/clock配置文件添加时区信息,假如没有则新建
- ZONE="Asia/Shanghai" #时区
- UTC=false #设置为false,硬件时钟不与UTC时间一致
- ARC=false #仅用于alpha表明使用ARC。
复制代码 然后正常重启项目就可以啦
参考文章:
Linux体系与Tomcat时区差别等的解决方法总结(全)-CSDN博客
Linux 体系时间和硬件时间_硬件时间和体系时间-CSDN博客
Linux体系下时间不准的问题_cannot access the hardware clock via any known met-CSDN博客
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |