如何验证NTP是否正常(检查NTP状态)

时间:2020-01-09 10:42:08  来源:igfitidea点击:

我已经设置了NTP(网络时间协议)客户端和/或者服务器来管理网络上的系统时钟。
但是,如何验证其正常工作?
如何检查NTP的状态?
在服务器和客户端系统上,保持正确的时间至关重要。
您可以使用以下任何程序来验证NTP客户端配置在Linux或者类Unix系统上是否正常运行。

如何检查NTP是否正常工作?

  • ntpq标准NTP查询程序
  • ntpstat显示网络时间同步状态
  • timedatectl使用systemd显示或者设置有关ntp的信息

让我们详细查看所有命令和示例

使用ntpstat命令验证NTP是否正常工作

ntpstat命令将报告在本地计算机上运行的NTP守护程序的同步状态。
如果发现本地系统与参考时间源同步,则ntpstat将报告近似的时间精度。

ntpstat命令的退出状态

您可以使用退出状态(返回值)从shell脚本或者命令行本身验证其操作:

  • 如果退出状态0时钟已同步。
  • 退出状态1时钟未同步。
  • 退出状态2如果时钟状态不确定,例如ntpd无法连接。

执行命令,如下所示:

$ ntpstat

输出示例:

synchronised to NTP server (149.20.54.20) at stratum 3 
   time correct to within 42 ms
   polling server every 1024 s

使用echo命令显示ntp客户端的退出状态:

$ echo $?

输出示例:

0

使用ntpq命令检查NTP的状态

ntpq实用程序用于监视NTP守护程序ntpd操作并确定性能。
该程序可以以交互方式运行,也可以使用命令行参数进行控制。
在基于Linux或者Unix的系统上执行以下命令:

$ ntpq -pn

或者

$ ntpq -p

输出示例:

remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*dione.cbane.org 204.123.2.5      2 u  509 1024  377   51.661   -3.343   0.279
+ns1.your-site.c 132.236.56.252   3 u  899 1024  377   48.395    2.047   1.006
+ntp.yoinks.net  129.7.1.66       2 u  930 1024  377    0.693    1.035   0.241
LOCAL(0)        .LOCL.          10 l   45   64  377    0.000    0.000   0.001

*您同步到的源(syspeer)。
上面是运行ntp客户端的示例。
其中:

  • -p:打印服务器已知的对等点列表以及它们的状态摘要。
  • -n:以点分四进制数字格式输出所有主机地址,而不是转换为规范的主机名。

另一个可靠的来源正在运行以下命令:

$ ntpq -c rv

查找以下跳转代码:跳转代码0(leap_none)表示正常的同步状态。
飞跃代码3(leap_alarm)表示NTP从未同步。
这是一个示例输出:

关于timedatectl命令的注释

如果使用的是基于systemd的系统,请运行以下命令以检查服务状态

# timedatectl status

输出示例:我的NTP(系统时间同步)是否正常工作?

systemd-timesyncd配置

如果"启用NTP"设置为"否"。
尝试通过编辑/etc/systemd/timesyncd.conf文件进行配置,如下所示:

# vi /etc/systemd/timesyncd.conf

如下追加/编辑[时间],即添加时间服务器或者更改提供的时间服务器,取消注释相关行并列出其主机名或者IP,并用空格分隔(默认是我的Debian 8.x服务器):

[Time]
Servers=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org

保存并关闭文件。
最后,启动并启用它,运行:

# timedatectl set-ntp true
# timedatectl status

输出示例:

Local time: Mon 2019-09-30 18:25:38 IST
                  Universal time: Mon 2019-09-30 12:55:38 UTC
                        RTC time: Mon 2019-09-30 12:55:38
                       Time zone: Asia/Kolkata (IST, +0530)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

以上是验证NTP在Linux上正常工作的简便方法。