最近在划水的鱼博客项目上用 @Scheduled 和corn表达式写了个定时器,项目在本地windows上跑是没有问题的,但是发现发布到linux服务上时,定时器运行时间不对了。与我设置的定时时间相差了8个小时。
查了相关资料发现是:linux的CentOS系统时间与UTC时间不一致导致的
咱们在安装完Centos Linux操做系统以后,点击系统的时间发现与如今所使用的时间不一致,相差有8小时,而在安装系统的时候咱们选择的时区是上海,可是CentOS Linux默认的bios时间是utc时间(UTC是协调世界时(Universal Time Coordinated)英文缩写,是由国际无线电咨询委员会规定和推荐,并由国际时间局(BIH)负责保持的以秒为基础的时间标度。
UTC至关于本初子午线(即经度0度)上的平均太阳时,过去曾用格林威治平均时(GMT)来表示.北京时间比UTC时间早8小时,以1999年1月1日0000UTC为例,UTC时间是零点,北京时间为1999年1月1日早上8点整。),因此咱们在时间上面相隔了8个小时。这个时候bios的时间和系统的时间固然是不一致,一个表明 utc 时间,一个表明cst(+8时区),即上海的时间。
查看时间命令:
1.查看系统时间:
date
2.查看utc时间
date -u
很明显两个时间相差勒8个小时,所以就出现了以上的问题。
在CentOS Linux中终端命令中执行如下命令:
vi /etc/sysconfig/clock
------------------------------
ZONE="Asia/Shanghai"操作系统
UTC=false #设置为false,硬件时钟不于utc时间一致同步
ARC=falsei
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate 47.99.xxx.xxx(你的ip)
若是没有安装ntp服务器,刚须要先执行如下命令 安装npt服务器:
yum install ntp
如果报这个问题:
解决杀掉进程
使用lsof –i:123
没有lsof命令的话:yum install -y lsof
[root@izbp12w1juq9po2x7vs7nnz ~]# lsof -i:123
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ntpd 31393 ntp 16u IPv4 48258263 0t0 UDP *:ntp
ntpd 31393 ntp 17u IPv6 48258264 0t0 UDP *:ntp
ntpd 31393 ntp 18u IPv4 48258269 0t0 UDP localhost:ntp
ntpd 31393 ntp 19u IPv4 48258270 0t0 UDP izbp12w1juq9po2x7vs7nnz:ntp
ntpd 31393 ntp 20u IPv4 48258271 0t0 UDP izbp12w1juq9po2x7vs7nnz:ntp
[root@izbp12w1juq9po2x7vs7nnz ~]# kill -9 31393
然后再执行命令:ntpdate 47.99.xxx.xxx(你的ip)
如果报错:
解决办法:
①在本机上装ntpd服务
②启动ntpd服务
③检查ntp server完成了与自身的同步
④使用ntpdate让其它节点与ntp server进行同步
/sbin/hwclock --systohc
好了,咱们的CentOS linux系统时间和计算机硬件时间终于都是cst时间了,而且都是上海时区,终因而正常啦。
时间是同步了,但是在网上搜方法时,将CST时间换成了GMT了,不影响使用就不关心了。
GMT时间是格林尼治标准时间。CST时间是指包含中国。美国。巴西,澳大利亚四个时区的时间。
还有一个简单的方法就是直接改时间,命令:
date -s 2021/10/13
date -s 11:04
完事!