rdate 是一个简单的网络时间协议客户端,用于从远程时间服务器获取日期和时间。它使用TCP端口37(TIME协议)或123(NTP协议)与时间服务器通信。虽然功能相对简单,但在一些老旧的系统或简单场景中仍有使用。
rdate [选项] [时间服务器]
| 选项 | 说明 |
|---|---|
-4 |
仅使用IPv4地址 |
-6 |
仅使用IPv6地址 |
-p |
仅打印从服务器获取的时间,不设置系统时间 |
-s |
从服务器获取时间并设置系统时间(默认行为) |
-u |
使用UDP协议而不是TCP协议 |
-t 超时时间 |
设置连接超时时间(秒) |
-l |
使用syslog记录错误信息而不是标准错误输出 |
-v |
显示详细输出 |
-h, --help |
显示帮助信息 |
-V, --version |
显示版本信息 |
从指定的时间服务器同步时间:
sudo rdate time.nist.gov
需要root权限才能修改系统时间。如果不指定服务器,将使用编译时的默认服务器。
查看时间服务器的当前时间:
rdate -p time.nist.gov
输出格式:time.nist.gov: Mon Jun 10 14:30:45 2024
sudo rdate -6 time.nist.gov
强制使用IPv6协议与时间服务器通信。
sudo rdate -t 10 time.nist.gov
设置连接超时为10秒,超过时间未响应则放弃连接。
sudo rdate -u time.nist.gov
使用UDP协议而不是默认的TCP协议与时间服务器通信。
sudo rdate -v time.nist.gov
显示详细的连接和同步过程信息。
| 时间服务器 | 描述 | 位置 |
|---|---|---|
time.nist.gov |
美国国家标准与技术研究院时间服务器 | 美国 |
time.windows.com |
微软Windows时间服务器 | 全球 |
pool.ntp.org |
NTP服务器池(需要ntpdate) | 全球 |
time.google.com |
Google公共NTP服务器 | 全球 |
time.apple.com |
Apple时间服务器 | 全球 |
ntp.aliyun.com |
阿里云NTP服务器 | 中国 |
| 特性 | rdate | ntpdate |
|---|---|---|
| 协议支持 | TIME协议(TCP 37) 简单NTP(UDP 123) |
完整NTP协议(UDP 123) 支持更精确的时间同步 |
| 精度 | 秒级精度 | 毫秒级甚至微秒级精度 |
| 使用场景 | 简单时间同步 老旧系统兼容 |
精确时间同步 现代Linux系统 |
| 安全性 | 较低,易受中间人攻击 | 支持认证和加密 |
| 状态 | 已过时,逐渐被淘汰 | 仍在使用,但推荐使用chrony |
rdate命令的工作流程:
注意:TIME协议返回的是从1900年1月1日到现在的秒数,而系统时间通常是从1970年1月1日(Unix纪元)开始计算,需要进行转换。
date命令查看当前系统时间:datentpdate进行更精确的时间同步:sudo ntpdate pool.ntp.org0 * * * * /usr/bin/rdate -s time.nist.govwhich rdate 或 rdate --versionsudo apt install rdate (Debian/Ubuntu) 或 sudo yum install rdate (RHEL/CentOS)telnet time.nist.gov 37 或 nc -zv time.nist.gov 37| 替代工具 | 描述 | 推荐场景 |
|---|---|---|
ntpdate |
使用NTP协议同步时间,精度更高 | 一次性时间同步,系统初始化 |
chrony |
现代NTP客户端/服务器,支持断续网络连接 | 持续时间同步,移动设备,不稳定网络 |
systemd-timesyncd |
systemd提供的时间同步服务 | 使用systemd的现代Linux发行版 |
openntpd |
OpenBSD的NTP实现,轻量安全 | 安全要求高的环境 |
-p选项测试TIME协议和rdate的历史: