Redhat 7:
先停止ntp服务,然后强制与NTP服务器的时间同步,完成后再启动ntp服务。
# systemctl stop ntpd
# ntpdate ntp-server-ip
(如果想不停止ntp服务来执行ntpdate,那么可以加上-u选项。)
# systemctl start ntpd
SUSE:
# /etc/init.d/ntp ntptimeset
ntpq -p命令输出说明:
位置 | 标志 | 含义 |
remote最前面 | * | 响应的NTP服务器和最精确的服务器 |
remote最前面 | + | 响应这个查询请求的NTP服务器 |
remote最前面 | blank(空格) | 没有响应的NTP服务器 |
第1列 | remote | 响应这个请求的NTP服务器的名称 |
第2列 | refid | NTP服务器使用的更高一级服务器的名称 |
第3列 | st | 正在响应请求的NTP服务器的级别 |
第4列 | when | 上一次成功请求之后到现在的秒数 |
第5列 | poll | 本地和远程服务器多少时间进行一次同步,单位秒,在一开始运行NTP的时候这个poll值会比较小,服务器同步的频率大,可以尽快调整到正确的时间范围,之后poll值会逐渐增大,同步的频率也就会相应减小 |
第6列 | reach | 用来测试能否和服务器连接,是一种衡量前8次查询是否成功的位掩码值,每成功连接一次它的值就会增加,377表示都成功,0表示不成功。它是八进制数,正常情况下值为[0, 1, 3, 7, 17, 37, 77, 177, 377],对应的二进制为[0, 1, 11, 111, 1111, 11111, 111111, 1111111, 11111111],ntp服务启动后,reach就以poll值为周期与ntp server通信,为了方便理解,我们可以简单的认为每次ping一下上层ntp server,如果成功,那reach就向左移一位,右边补1,如果失败,则右边补0,所以如果reach不是上面给出的枚举值,那就是在通信过程中出错了。当reach 达到17时(对应1111,即最近的4次通信都成功了),那才开始同步时间,这时,remote项对应的域名或IP列表有,其中一个前面会有号,表示该IP就是NTP server。而在开始同步时间之前,当客户端访问NTP server时,都会出现stratum 16,no server suitable for synchronization found这样的错误。也就是说如果你在NTP server主机上重启了ntp服务,那要等4poll秒(在前4次通信都是成功的前提下),该NTP server才与上层NTP server开始同步时间,而且只有当开始同步时,该NTP server才能为其它客户端提供NTP服务。因此,你在/etc/ntp.conf中设置的同步周期minpoll maxpoll不能太大,因为每次ntp服务重启后,要等4倍长的时间才能开始同步。 |
第7列 | delay | 从本地机发送同步要求到ntp服务器的往返时间 |
第8列 | offset | 主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒,offset越接近于0,主机和ntp服务器的时间越接近 |
第9列 | jitter | 统计了在特定个连续的连接数里offset的分布情况。简单地说这个数值的绝对值越小,主机的时间就越精确 |
附:
简单配置ntp服务器步骤:
1)编辑/etc/ntp.conf文件,加入以下两行:
server 127.127.1.0
fudge 127.127.1.0 stratum 6
2)启动ntpd服务
# systemctl start ntpd
# systemctl status ntpd
# systemctl enable ntpd
# ntpq -p
ntp异常问题:
如果与ntp时钟源的时间相差太大(大于1000秒),ntp服务可能会退出,请参考以下链接:
参考:
How far off is “too far off” for ntpd?Miscellaneous Options