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命令输出说明

android app 强制NTP同步_运维

位置

标志

含义

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服务可能会退出,请参考以下链接:

android app 强制NTP同步_运维_02


参考:

How far off is “too far off” for ntpd?Miscellaneous Options