NTPv4的ntpdate命令

用途

使用网络时间协议 (NTP) 设置日期和时间。

语法

ntpdate [ -46bBdqsuv ] [ -a key] [-e authdelay] [ -k keyfile] [ -o version] [ -p samples] [ -t timeout] server [...]

描述

ntpdate命令通过轮询作为服务器参数给定的 NTP 服务器来确定正确的时间,从而设置本地日期和时间。 ntpdate命令必须以本地主机 root 用户身份运行。 从每个指定服务器获取样本,并使用 NTP 时钟过滤和选择算法的子集来选择最佳样本。
注:"ntpdate命令的准确性和可靠性取决于服务器的数量、每次运行的轮询次数以及运行的间隔时间。

必要时可手动运行 "ntpdate命令设置主机时钟,或从主机启动脚本中运行该命令在启动时设置时钟。 这些函数对于在启动 "ntpd守护进程前设置时钟时间非常有用。 也可以通过 cron 脚本运行 ntpdate 命令。 不过,"ntpdate命令和设计好的 "cron脚本并不能替代 "ntpd守护进程,后者使用复杂的算法来最大限度地提高准确性和可靠性,同时最大限度地减少资源使用。 由于 "ntpdate命令不会像 "ntpd守护进程那样调整主机时钟频率,因此精确度有限。

时间调整通过 "ntpdate命令以下列方式进行:
  • 如果 "ntpdate命令确定时钟误差超过0.5秒,它就会通过调用系统 "settimeofday子程序来计时。
  • 如果误差小于0.5秒,则通过调用系统 "adjtime子程序来回转时间。
当误差较小时,第二种方法的干扰较小,准确性也较高,而且每隔一两个小时从 cron 脚本中运行 ntpdate 命令时效果也很好。

如果 "ntpdate命令未指定 "-u标志,当 "ntpd守护进程也在同一主机上运行时,"ntpdate命令将拒绝设置日期。 如果不使用守护进程,而是通过 cron 脚本定期运行 ntpdate 命令,那么每隔一两个小时运行一次就能保证时间足够精确,从而避免时钟走时。

如果 "NetInfo支持被编译到 "ntpdate命令中,并且 "ntpdate命令在 "NetInfo配置中为 "ntpd确定了时间服务器,那么服务器参数就是可选的。

标志

表 1. 标志
描述
-4 强制 DNS 将主机名解析到 IP 版本 4IPv4) 名称空间。
-6 强制 DNS 将主机名解析到 IP 版本 6IPv6) 名称空间。
-a 启用身份验证功能,并指定用于身份验证的密钥标识符作为参数 "key。 密钥和密钥标识在客户机密钥文件和服务器密钥文件中都必须匹配。 缺省情况是,禁用认证功能。
-B 使用 "adjtime子程序强制回转时间,无论测量偏移是否超过 + 或 - 500 毫秒。 默认情况下,如果偏移大于 + 或 -500毫秒,则使用 "settimeofday子程序设置时间。
注意:如果偏移量大于 + 或 - 500 毫秒,那么将时钟回转到正确值需要很长时间(数小时)。 在此过程中,切勿使用主机同步客户端。
-b 使用 "settimeofday子程序系统调用强制时间步进,而不是使用 "adjtime子程序系统调用强制时间回转(默认值)。 该选项用于在启动时从启动文件调用。
-d 启用调试模式,在该模式下,"ntpdate命令使用非特权端口执行所有步骤,但不调整本地时钟。 它还会打印对一般调试有用的信息。
-e 自动延迟 指定执行身份验证功能的处理延迟。 处理延迟时间由authdelay变量指定,单位为秒或分数。 更多信息,请参阅 "ntpd守护进程。 这个数字很小,在大多数情况下可以忽略不计,但指定它可以增强较慢 CPU 的计时能力。
-k KeyFile keyfile变量指定的字符串形式指定身份验证密钥文件的路径。 缺省值为 /etc/ntp.keys。 该文件需要采用 "ntpd恶魔中描述的格式。
-o 版本 版本变量指定的整数来指定传出数据包的 NTP 版本。 版本变量的有效值为 1、2、3 或 4。 缺省值为 4。 通过该选项,"ntpdate命令可用于旧版本的 NTP。
-p 样本 samples变量指定的整数形式,指定从每个服务器获取的样本数。 缺省值为 4。
-q 指定查询。 -q选项不设置时钟。
-s 将日志输出从标准输出(默认)转到系统 "SYSLOG设备。 它主要是为方便 "cron脚本而设计的。
-t timeout 指定服务器响应的最长等待时间。 最长等待时间由超时变量指定,单位为秒或分数。 此值将四舍五入为 0.2 秒的倍数。 默认值为 2 秒,适合在局域网内进行轮询。
-u 指示 "ntpdate命令使用非特权端口发送数据包。 如果防火墙阻止了特权端口的传入流量,并且需要与防火墙外的主机同步,则此选项非常有用。
注意:"-d选项始终使用非特权端口。
-v 详细输出。 该选项将记录 "ntpdate命令的版本标识字符串。

参数

表 2. 参数
描述
服务器... 指定要轮询的服务器。

退出状态

ntpdate命令返回以下退出值:
表 3. 退出状态
描述
0 成功完成。
nonzero 发生错误。

安全性

访问控制
必须具有 root 用户权限才能运行此命令。
审计活动
不适用

示例

  1. 要通过轮询地址为9.41.254.24 的 NTP 服务器来设置本地日期和时间,请输入以下命令:
    ntpdate 9.41.254.24
    将显示类似以下的输出结果:
    address: ::
    address: 0.0.0.0
    25 Feb 12:19:41 ntpdate[434262]: adjust time server 9.41.254.24 offset -0.005270  sec

文件

/usr/sbin/ntp4/ntpdate4
包含 NTP 版本 4NTPv4) 的 "ntpdate命令。
/usr/sbin/ntpdate-->/usr/sbin/ntp4/ntpdate4
/usr/sbin目录中 NTP 第 4 版二进制文件的默认符号链接。
/etc/ntp.keys
ntpdate命令使用的加密密钥。