ntpdate:ntpdate 是 Linux 和类 Unix 系统中的一个命令行工具,用于手动同步系统的时间与指定的 NTP(Network Time Protocol)服务器。它常被用来快速调整系统时间,但在现代系统中逐渐被其他时间同步服务(如 chronyd 或 systemd-timesyncd)取代。
一、语法
ntpdate [选项]
二、选项
-u 使用非特权 UDP 端口(>1024)发送请求,适用于权限限制的网络环境。
-b 强制以“步进”方式校时,直接调整到正确时间,而不是逐步调整(slew)。
-d 调试模式,不实际调整时间,只显示同步过程中的相关信息。
-q 查询模式,仅显示 NTP 时间,不进行实际同步。
-t <秒> 设置等待超时时间,默认值为 5 秒。
-v 显示详细信息。
-p <次数> 指定数据包采样次数,用于提高精确度(默认值为 4 次)。
三、配置 NTP 服务器
- 校时时,ntpdate 会通过指定的 NTP 服务器获取时间。可以使用:
- 官方 NTP 服务器池:pool.ntp.org(这里可以使用国内的ntp时间服务器,阿里百度等。)
- 本地 NTP 服务器,如 ntp.localdomain
- 配置多台服务器:
ntpdate ntp1.example.com ntp2.example.com
四、校时方式
- 步进校时(Step Adjustment):直接将时间调整到目标时间。适合时间误差较大的情况。
- 逐步校时(Slew Adjustment):逐渐调整时钟速度,适合小时间误差的同步。
ntpdate -b ntp.aliyun.com 通过 -b 强制启用步进校时。
五、调试和验证
- 在调试模式下(-d),可以验证 NTP 服务器是否响应以及时间同步情况:
ntpdate -d pool.ntp.org
- 输出示例:
server 123.45.67.89, stratum 2, offset 0.00123, delay 0.03456
28 Nov 10:00:00 ntpdate[1234]: adjust time server 123.45.67.89 offset 0.00123 sec
- stratum:表示服务器的层级(越低越可靠)。
- offset:表示本地时间与 NTP 时间的差值。
六、使用定时任务进行定时同步时间
- 可以使用 cron 配置定期执行 ntpdate:
sudo crontab -e
- 添加以下内容,每小时同步一次:
0 * * * * /usr/sbin/ntpdate pool.ntp.org
七、注意事项
- ntpdate 的使用在逐渐减少,主要因为以下原因:
- 无法提供持续的时间同步。
- 需要手动运行。
- 推荐替代工具:
- chronyd:提供更灵活和持续的时间同步。
- systemd-timesyncd:适合现代 systemd 系统。
- ntpdate 在某些新版本的 Linux 发行版中可能未默认安装,需要手动安装。
- ntpdate 是一个简单、直接的工具,用于临时校正系统时间。但在生产环境中,更推荐使用持久运行的 NTP 客户端(如 chronyd)来维护长期时间同步的稳定性和准确性。