linux 中 时区不对 及 date 时间 和 hwclock 时间不一致解决方案

进入新公司后,发现dev服务器上数据库存入的时间不对,比如今天是2019年1月22号,而dev服务器上的时间则是2019年1月21号。eg:
linux 中 时区不对 及 date 时间 和 hwclock 时间不一致解决方案_第1张图片

这种日期时间相差太多的情况,通常是 “时区”设置不正确。

一 时区不对解决方案

1. 必须确保时区准确,否则时间同步后显示不正常。
对于中国是 CST时区 的 东八区。比如:

再查看时间出问题的公司dev的时区:

2. 如果时区不正确,如,在中国,时区是CST,若不是,修改方式:

执行命令:  tzselect
linux 中 时区不对 及 date 时间 和 hwclock 时间不一致解决方案_第2张图片

3 将时区信息拷贝,并覆盖原来的时区信息,操作命令如下:

[root@localhost ~]# date -R
Tue, 22 Jan 2019 14:33:23 +0800
[root@localhost ~]# date
Tue Jan 22 14:33:24 CST 2019

二 date时间和 hwclock 时间不同步解决方案  ----在同步时间之前需要先检查时区是否是china 的 CST 时区

操作系统有两个时间:软件时间和硬件时间

软件时间: 查看方式 date, 是距离 1970.1.1 00:00:00 的时间差;
硬件时间: sudo hwclock -r,  硬件时间是BIOS的时间。

我们公司用的某通的云服务器,它的软件时间比实际时间快几分钟,比如,实际时间是 2019 下午 2:39 ,而软件显示的时间则是 2019 下午 14:43。该通的不同的云服务软件时间跟实际时间的差值还不一样,这就会造成数据库同步,查 log 时时间不同步的麻烦。比如下面这台云服务器上的软件时间和硬件时间如下:

对于软件时间正确的情况:

将软件时间写入到硬件时间的方法:
 

[root@gxzs-mysql01 ~]# sudo hwclock -w    // -w:将软件时间写入到硬件时间;
[root@gxzs-mysql01 ~]# hwclock -r         // -r:读取硬件时间
Tue 22 Jan 2019 02:54:29 PM CST  -10.010735 seconds
[root@gxzs-mysql01 ~]# date               // 读取软件时间
Tue Jan 22 14:54:31 CST 2019

对于硬件时间正确的情况:

将硬件时间写入到软件时间:

例如:将系统日期设定成2019年1月22日的命令

命令:   date -s 01/22/2019

例如:将系统时间设定成下午 4点00分00秒的命令

命令:date -s 16:00:00

将当前时间和日期写入BIOS,避免重启后失效

命令:hwclock -w

完整命令如下:

[root@mysql01 ~]# date -s 16:00:00    // 将软件时间设定成正确的时间
Tue Jan 22 16:00:00 CST 2019
[root@mysql01 ~]# hwclock -w           // 将软件时间写入硬件时间,同步到硬件时钟上

你可能感兴趣的:(linux)