ntpdate仅适用于一次性时间校准,不能替代ntpd或systemd-timesyncd的持续平滑同步,且在centos 8+/ubuntu 20.04+等新系统中已被弃用或移除;使用前须停用相关服务、指定国内ntp源、加-u参数并同步硬件时钟。

直接说结论:用 ntpdate 同步时间是可行的,但仅适用于一次性校准;它不能替代 ntpd 或 systemd-timesyncd 的持续平滑同步,且在多数现代发行版中已被弃用或默认未安装。
为什么 ntpdate 命令常报 “command not found”
CentOS 8+、RHEL 8+、Ubuntu 20.04+ 等新系统已移除 ntpdate 包,不再随系统分发。它被 systemd-timesyncd(轻量)或完整 ntpd(严格)取代。
- CentOS/RHEL:需手动安装:
yum install -y ntpdate(注意:仅限 7 及更早版本稳定支持) - Ubuntu/Debian:
apt install -y ntpdate仍可装,但包已标记为“deprecated”,timedatectl是首选 - 运行
which ntpdate或ntpdate --version前先确认是否真存在,别默认它一定在
ntpdate 必须关闭 ntpd 或 systemd-timesyncd 才能成功
ntpdate 会直接“跳变”修改系统时钟(step),而 ntpd 和 systemd-timesyncd 默认以“渐进调整”(slew)方式运行——两者冲突,必然失败。
- 常见错误信息:
the NTP socket is in use, exiting或no server suitable for synchronization found - 临时停用:
sudo systemctl stop systemd-timesyncd(Ubuntu/Debian)或sudo systemctl stop ntpd(RHEL/CentOS) - 若用
crontab定时跑ntpdate,必须确保上述服务始终处于disabled状态,否则 cron 任务大概率静默失败
国内可用的 NTP 服务器地址与实用参数组合
用公共 NTP 源时,优先选带 .cn 或明确标注“中国”的地址,避免跨运营商延迟高、丢包导致超时失败。
- 推荐地址:
ntp.sjtu.edu.cn、210.72.145.44(国家授时中心)、cn.pool.ntp.org - 关键参数建议:
-
-t 2:将超时设为 2 秒,避免卡住(默认 1 秒对国内部分网络偏短) -
-p 2:只取 2 个样本,加快响应(默认 4,没必要) -
-u:强制使用非特权端口,绕过防火墙拦截(尤其在容器或受限网络中)
-
- 实操示例:
sudo ntpdate -t 2 -p 2 -u ntp.sjtu.edu.cn
同步后务必写入硬件时钟(hwclock)
Linux 系统时间和硬件时钟(RTC)是分离的。ntpdate 只改系统时间,断电重启后仍会回到错误时间。
- 执行完
ntpdate后,立即运行:sudo hwclock --systohc - 检查硬件时钟是否更新:
sudo hwclock --show - 如果系统设置为 UTC(
timedatectl status中显示RTC in local TZ: no),则hwclock --systohc写入的是 UTC 时间;若设为本地时间(yes),才写入 CST。别混淆——多数服务器应保持 UTC 模式
真正容易被忽略的点是:ntpdate 不是“设完就完”的命令,它和系统时间管理机制(systemd-timesyncd、ntpd、硬件时钟策略)紧密耦合,任何一环没对齐,都会导致看似成功实则无效的假象。











