什么是 ntpdate?
ntpdate 是一个用于从 Network Time Protocol (NTP) 服务器获取时间并设置本地系统时间的命令行工具,它就像一个“一次性”的时间同步工具,它会连接到指定的 NTP 服务器,获取当前精确时间,然后立即更新你本地计算机的时钟。

重要提示: ntpdate 在现代 Linux 发行版中已被弃用,官方推荐使用更现代、功能更强大的 ntpd 或 chrony 服务。ntpd 是一个持续运行的后台守护进程,它会不断、平滑地调整你的系统时间,而不仅仅是设置一次。chrony 则是 ntpd 的一个更现代、更快的替代品,尤其在不稳定的网络环境下表现更好。
尽管如此,ntpdate 仍然有其用武之地,
- 一次性手动同步:当你需要快速将系统时间与某个标准源对齐时。
- 应急修复:当系统时间严重错误时,先用
ntpdate快速拉回正轨,再启动ntpd服务进行持续同步。 - 脚本或任务:在某些自动化脚本中,可能只需要在任务开始前同步一次时间。
安装 ntpdate
在大多数现代 Linux 发行版中,ntpdate 包可能已经不默认安装,或者与 ntp 包分离了。
Debian / Ubuntu
sudo apt update sudo apt install ntpdate
注意:在较新的 Ubuntu 版本(如 20.04+)中,你可能需要安装
ntp包来获得ntpdate命令。(图片来源网络,侵删)
CentOS / RHEL / Fedora
sudo yum install ntpdate # 或者使用 dnf (新版本) sudo dnf install ntpdate
Arch Linux
sudo pacman -S ntp
在 Arch 中,
ntpdate作为ntp包的一部分被安装。
如何使用 ntpdate
基本语法非常简单:
sudo ntpdate -q [NTP服务器地址]
sudo:修改系统时间需要 root 权限。-q:查询模式,这是推荐使用的第一个选项,它不会改变你的系统时间,只会显示从 NTP 服务器获取到的时间信息,并告诉你如果同步的话时间会调整多少,这可以让你先检查一下时间差异和服务器响应。[NTP服务器地址]:你想要同步的 NTP 服务器的地址或域名。
常用公共 NTP 服务器
你可以使用以下公共 NTP 服务器进行测试,为了负载均衡,最好使用你地理位置较近的服务器。
- 中国国家授时中心:
ntp.ntsc.ac.cn - 阿里云 NTP 服务器:
ntp1.aliyun.com,ntp2.aliyun.com - NTP Pool 项目: 这是一个全球性的 NTP 服务器池,它会自动为你分配最佳的服务器,推荐使用。
pool.ntp.org(全球)cn.pool.ntp.org(中国)asia.pool.ntp.org(亚洲)
使用示例
示例 1:查询时间差异(推荐操作)
在同步前,先查询一下与 pool.ntp.org 的时间差异。

sudo ntpdate -q pool.ntp.org
可能的输出:
server 216.239.35.0 (from interface eth0): offset -0.123456 sec, delay 0.045678 sec, jitter 0.001234
server 216.239.35.4 (from interface eth0): offset +0.098765 sec, delay 0.046789 sec, jitter 0.003456
server 216.239.35.8 (from interface eth0): offset -0.054321 sec, delay 0.047890 sec, jitter 0.002345
22 Jun 14:30:15 ntpdate[12345]: adjust time server 216.239.35.4 offset +0.098765 sec
- 解读:
offset: 这是本地时间与服务器时间的差值,如果为正,表示本地时间比服务器快;如果为负,表示本地时间比服务器慢。delay: 网络延迟。jitter: 时间抖动,即时间变化的稳定性。adjust time ...:ntpdate找到了一个最好的服务器,并告诉你如果执行同步,它会调整这个offset的时间。
示例 2:实际同步时间
如果你查询后觉得时间差异可以接受,或者确实需要立即同步,可以去掉 -q 参数执行。
sudo ntpdate pool.ntp.org
可能的输出:
22 Jun 14:31:05 ntpdate[12345]: step time server 216.239.35.4 offset +0.098765 sec
- 解读:
step time: 这表示ntpdate采用了“跳跃式”同步,直接将系统时间设置为目标时间,这是它的标准行为,对于大的时间差是必要的。- 你的系统时间已经被更新为与 NTP 服务器一致。
示例 3:指定多个 NTP 服务器
你可以提供一个列表,ntpdate 会依次尝试,直到找到一个可用的。
sudo ntpdate ntp.ntsc.ac.cn ntp1.aliyun.com cn.pool.ntp.org
现代替代方案:ntpd 和 chrony
如前所述,ntpdate 已被弃用,对于生产环境或需要持续精确时间的系统,你应该使用以下服务之一。
使用 chronyd (推荐)
chrony 是目前最流行、最快速的 NTP 客户端/服务器,尤其适合虚拟机和网络不稳定的场景。
-
安装 (CentOS/RHEL/Fedora):
sudo yum install chrony
安装 (Debian/Ubuntu):
sudo apt install chrony
-
配置文件 (
/etc/chrony.conf): 编辑配置文件,确保你的 NTP 服务器地址在pool或server指令中。# 使用中国 NTP 服务器池 pool cn.pool.ntp.org iburst # 或者指定特定服务器 # server ntp.ntsc.ac.cn iburst # 允许其他机器同步此服务器的时间(如果需要) # allow 192.168.1.0/24
-
启动并设置开机自启:
sudo systemctl start chronyd sudo systemctl enable chronyd
-
检查状态:
# 查看服务状态 sudo systemctl status chronyd # 查看同步信息(非常详细) chronyc tracking chronyc sources
使用 ntpd
ntpd 是传统的 NPT 守护进程。
-
安装 (CentOS/RHEL/Fedora):
sudo yum install ntp
安装 (Debian/Ubuntu):
sudo apt install ntp
-
配置文件 (
/etc/ntp.conf):# 使用中国 NTP 服务器池 server 0.cn.pool.ntp.org server 1.cn.pool.ntp.org server 2.cn.pool.ntp.org server 3.cn.pool.ntp.org # 禁止修改本地时钟 restrict default nomodify notrap nopeer noquery
-
启动并设置开机自启:
sudo systemctl start ntpd sudo systemctl enable ntpd
-
检查状态:
# 查看服务状态 sudo systemctl status ntpd # 查看同步信息 ntpq -p
总结对比
| 特性 | ntpdate |
ntpd / chronyd |
|---|---|---|
| 工作模式 | 一次性、命令行工具 | 持续运行、后台守护进程 |
| 时间调整 | 跳跃式 (Step) | 平滑式 (Slewing),除非差异过大 |
| 精确度 | 仅在同步瞬间精确 | 持续保持高精度 |
| 资源占用 | 极低,运行即结束 |

