澳门正规赌博十大网站-澳门游戏网站
做最好的网站

服务器中的web应用读取时间与系统时间不一致问

复制代码 代码如下:

第三步:docker运行时把服务器的localtime和timezone文件一起挂载到容器中

服务器中的web应用读取时间与系统时间不一致问题,job未按设置的时间执行。在docker run命令中增加: -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime

保存后push代码,重新发布最新的代码至服务器,此时去jenkins 系统信息中可以看到

服务器中的web应用读取时间与系统时间不一致问题,job未按设置的时间执行。user.timezone       Asia/Shanghai

Centos6.X操作系统的时区配置文件是/etc/sysconfig/clock,将文件内容修改为ZONE="Asia/Shanghai",来修正时区为东八区,保证java程序在启动的时候初始化时区是东八区。

就可以了,如果没有看到/Asia/Shanghai文件,手动执行以下 tzselect ,按照提示选择即可。

服务器中的web应用读取时间与系统时间不一致问题,job未按设置的时间执行。第四步:验证问题是否得以解决,job是否按设置的时间执行

服务器中的web应用读取时间与系统时间不一致问题,job未按设置的时间执行。经验证,确实按设置的时间执行job。

服务器中的web应用读取时间与系统时间不一致问题,job未按设置的时间执行。Java代码获取系统默认时区:

对于中国用户,如果centos默认使用UTC时区,那时间相差八个小时,其实可以通过简单的设置,变为中国时区,这时候机器上的时间和本地手表上的时间就是一致的。执行如下命令:

第二步:添加timezone文件

创建文件:touch /etc/timezone

添加内容:Asia/Shanghai

但是,有的时候通过以上步骤还是解决不了java程序时区问题,java程序读取时间还是不对,甚至System.getProperty("user.timezone")都读不到时区信息,只有System.out.println(java.util.TimeZone.getDefault)可以读到,并且读到的是系统在修改时区的时区信息。主要原因是我们在安装JDK之后发现时间不对才去修改的系统时区,此时jdk已经默认使用系统修改之前的那个时区,已经改不回来了,删掉jdk重装也没用。

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

背景:我们使用docker部署环境,把服务器的jenkins挂载到docker容器中运行。在jenkins中设置了job定时执行时间,却发现未按设置的时间运行

首先看了下历史构建版本的时间,跟jenkins中设置的执行时间刚好差8个小时,所以估计是时区的问题。

登录服务器发现/etc/localtime显示的时区为UTC,服务器上没有timezone文件(centos没有timezone文件)。但是docker运行后会从timezone中读取参数。

查看系统的时区:

第一步:修改服务器上的localtime

删除原先的软链接:rm -rf /etc/localtime

然后重新创建软链接至正确的时区:ln -s /usr/share/zoneinfo/Asia/Shanghai

System.out.println(System.getProperty("user.timezone"));

时区修改成功,但是记得修改时区默认配置文件/etc/timezone中的内容为Asia/Shanghai(Centos6.x修改的是/etc/sysconfig/clock文件中的内容为ZONE="Asia/Shanghai")。

为了保证java程序在启动时加载正确的默认时区:

3、修改配置文件中的时区参数

5、修改tomcat安装目录下的bin目录下的catalina.sh脚本,添加JVM参数JAVA_OPTS="${JAVA_OPTS} -Duser.timezone=GMT 08",来保证Tomcat的时区是东八区时区

执行:

注:在配置时区的时候,注意一定要校准系统时间和硬件时间,让两个时间保持一致

总结:

本文由澳门正规赌博十大网站发布于澳门游戏网站,转载请注明出处:服务器中的web应用读取时间与系统时间不一致问