首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ntpd有用吗?

ntpd有用吗?
EN

Unix & Linux用户
提问于 2021-04-22 12:10:17
回答 1查看 410关注 0票数 2

我正在我的机器上运行ntpd,但我不确定它是否正常工作。如何查询ntpd以确定它是否已成功连接到时间服务器,以及是否同步了内核时间?

EN

回答 1

Unix & Linux用户

发布于 2021-04-22 12:10:17

有几种方法可以确定ntpd是否工作:

  1. 使用ntpq -p (或ntpq -pn通过跳过DNS查找来节省时间)。这就是NTP工作时的样子:主机-a~# ntpq -p远程重定向时,当投票到达延迟偏移抖动时,它会产生抖动,-p 0.debian.n .POOL. 16 p- 64 0 0.000 0.000 0.000 1.debian..POOL.n .POOL. 16 p-64 0 0.000 0.000 0.000 2.debian.pool。N .POOL. 16 p. 16 p. 64 0 0.000 0.000 0.000 3.debian.pool.n .POOL. 16 p- 64 0 0.000 0.000 0.000 +mail.master-of 144.76.76.107 3 u 975 1024 377 13.731 -0.737 2.552 +ntp2.hetzner.de 124.216.164.14 2 u 232 1024 377 15.914-0.650 0.854 +rondra.lf-net.o 237.17.204.95 2 u 1020 1024 377 13.751 -0.557 4.292 -funky.f5s.de 131.188.3.222 2 u 480 1024 377 15.730 2.082 4.377 +stratum2-3.NTP 129.70.137.82 2 u 742 1024 377 19.785 -0.366 7.498 *mail.klausen.dk 193.79.237.14 2U 173 1024 377 14.383 -0.513 2.066它将列出它所连接的实际对等点;*指示要同步到的源。有关输出的更多信息可在NTP文档中获得。这就是它不是的样子: host-b ~# ntpq -p远程refid st t,当投票达到延迟偏移抖动时,它会产生抖动0.debian.n .POOL. 16 p- 64 0 0.000 0.000 0.000 1.debian..POOL.n .POOL. 16 p-64 0 0.000 0.000 0.000 2.debian.pool.n .POOL. 16 p- 64 0 0.000 0.000 0.000 3.debian.n.n .POOL. 16 p- 64 0 0.000 0.000 0.000这通常表明ntpd无法连接到任何一个,可能是因为防火墙阻止了连接。ntpq -p不太适合脚本化的检查,因为输出必须被解析,虽然它的速度(单个调用的速度为30‘s)并不坏,但是有一些更快的方法,我将在后面讨论。
  2. 如果您使用的是systemd,则可以使用timedatectl status。这就是NTP工作时的样子(注意System clock synchronized: yes):主机-a~#时间数据传输状态本地时间: Do 2021-04-22 13:29:20 CEST环球时间: Do 2021-04-22 11:29:20 UTC时间: Do 2021-04-22 11:29:21时区:欧洲/柏林,+0200)系统时钟同步:是NTP服务:本地TZ中的非活动RTC :不,这是它不是时的样子(注意System clock synchronized: no):host-b ~# timedatectl状态本地时间: Do 2021-04-22 13:29:53 CEST环球时间: Do 2021-04-22 11:29:53 UTC RTC时间: Do 2021-04-22 11:29:42时区:欧洲/柏林(CEST ),+0200)系统时钟同步:无NTP服务:本地TZ: no中的非活动RTC : no (NTP servicesystemd-timesyncdsystemd‘NTP自己的NTP客户端)。在安装ntpd时,它不应该运行,因此这里需要no。) timedatectl status查询仅按需启动的systemd-timedated,这导致在第一次调用时性能损失较小,因此进一步的调用大约需要12 is。systemd-timedated反过来使用adjtimex(2) syscall查询内核;如果adjtimex(2)返回设置了STA_UNSYNC位的状态,则时钟不同步。这意味着timedatectl实际上并不是在与ntpd对话,而是查询内核中存储的一点,只要同步状态发生变化,ntpd之类的NTP服务就会更新该内核。timedatectl status非常适合脚本编写,因为您可以直接查询相关属性: host-a ~# timedatectl显示-p NTPSynchronized --值是yes -b~# timedatectl显示-p NTPSynchronized --值no。
  3. 直接使用adjtimex(2):这是对用户最不友好的方法,但对于脚本编写来说是最快的方法。Debian提供的busybox有一个adjtimex小程序,用作adjtimex(2) syscall的简单包装器。这就是NTP工作时的样子:主机-a~# busybox adjtimex模式:0 -o偏移:-570098 us -f freq.adjust: 857283 (65536 =1 1ppm),最大错误: 478704 esterror: 302状态: 8193 (PLL) -p时间点: 10精度:1 us容忍度: 32768000 -t蜱: 10000 us time.tv_sec: 1619092119time.tv_usec: 60467600返回值:0(时钟同步)--这是它不是的样子(注意status行中的UNSYNC,和):主机b~# busybox adjtimex模式:0 -o偏移量:0 us -f freq.adjust: 2126708 (65536 =1 1ppm),最大误差: 16000000酯化: 16000000状态: 16449 (PLL \ UNSYNC) -p时间点:7精度:1美国公差: 32768000 -t蜱: 10000 us time.tv_sec: 1619091984 time.tv_usec: 307119返回值:5(时钟不同步)不幸的是,busybox adjtimex似乎没有提供一种只打印特定字段的方法,返回值只是打印出来的,而不是实际返回的。这意味着对于脚本,您必须解析输出(例如busybox adjtimex | grep -q UNSYNC)。另一方面,它以极快的速度来补偿这一点--只有0.5ms!
票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/646247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档