以下内容,适用于 CentOS 7 (systemd 体系)
一。 首先,确认你是否启用了 ntp 服务:
[root@nlb2-liantiao ~]# timedatectl Local time: Tue 2018-07-17 18:15:31 CST Universal time: Tue 2018-07-17 10:15:31 UTC RTC time: Tue 2018-07-17 10:15:47 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/a
二。 确认你的时区,是不是你的时区,见 (一)
如果不是,这样改:
[root@nlb2-liantiao ~]# timedatectl list-timezones |grep -i shanghai Asia/Shanghai [root@nlb2-liantiao ~]# timedatectl set-timezone Asia/Shanghai
三。确定你用了哪个ntp util
目前常用的,有两个: ntp和chrony。按理说,你至少应该装了一个
[root@nlb2-liantiao ~]# rpm -qa |grep "ntp|chrony" ntpdate-4.2.6p5-25.el7.centos.2.x86_64 ntp-4.2.6p5-25.el7.centos.2.x86_64 或 [root@test ~]# rpm -qa |grep "ntp|chrony" chrony-2.1.1-1.el7.centos.x86_64
四。服务是否启用。
ntp的话,只需要启用 ntpdate服务就可以了。
ntpdate和ntpd两个服务的区别:
ntpdate是oneshot service,开机启动一次,直接快速完成同步。之后再不管了。
ntpd是 always online的,缓慢同步。适用于时间高度敏感的,高精度的应用场景。
[root@nlb2-liantiao ~]# systemctl list-unit-files |grep ntp ntpd.service enabled ntpdate.service disabled 或 [root@D129 ~]# systemctl list-unit-files |grep "chronyd|ntp" chronyd.service enabled
五。
如果两类service都没有,yum装一下就可以了。 之后使用如下命令enable
[root@D129 ~]# timedatectl set-ntp yes
六。如果还不好用,可能是网络问题,或者 DNS问题。
七。当ntp设置成功以后,如果你发现RTC 时间是不对的,这个时候,你还需要将BIOS时间修改一下。
可以使用,hwclock命令将当前系统时间回写至BOIS。
[root@D129 ~]# hwclock -w --utc
或
[root@D129 ~]# hwclock -w --localtime
主板内写入utc时间还是localtime这取决于你的个人决定,你的这个选择会被记录在文件 /etc/adjust 里。
需要主要的 windows 默认认为BIOS time是 localtime。所以,如果你是双系统boot的话,当选择写入utc time后,windows显示的时间也会变成utc time了。
八。汇总以上内容,回过头来。我们能发现,这里一共涉及了三个时间。
universal time, 全球标准时间,就是UTC时间,就是格林尼治时间。
local time, 就是OS时间。
rtc time, 就是 BIOS时间。A real-time clock (RTC) is a computer clock (most often in the form of an integrated circuit) that keeps track of the current time.
以上三个时间,是应该保持有机(就是做好时区信息翻译)同步的。
那么:
NTP 服务就是用来做 UTC 和OS time的同步的.
但是,RTC和OS之前的同步,如(七)所属,确实需要hwclock工具完成.不过这个server是什么呢?以前见到过,这次,没找到....以后再来更新.
完。