systemd-timesyncd 是 Ubuntu 20.04+ 默认且推荐的轻量级 NTP 客户端,深度集成 systemd,需禁用 ntp/chrony 避免冲突;配置国内服务器(如 ntp.aliyun.com)并重启服务即可生效,但时间偏差超 5 秒时会拒绝同步,需手动校正或改用 chrony。

systemd-timesyncd 是默认且推荐的自动同步方案
Ubuntu 20.04 及之后版本默认启用 systemd-timesyncd,它轻量、安全、与 systemd 深度集成,不需要额外安装 NTP 守护进程。手动装 ntp 或 chrony 反而可能冲突——尤其是当 systemd-timesyncd 仍在运行时,两个服务会争抢系统时钟控制权,导致 timedatectl status 显示 System clock synchronized: no 却查不到明显错误。
确认是否已启用:
timedatectl status
若输出中 System clock synchronized: yes 且 NTP service: active,说明已正常工作;若为 no,先停用其他时间服务(如 sudo systemctl stop ntp chrony),再执行:
sudo timedatectl set-ntp truesudo systemctl restart systemd-timesyncd
/etc/systemd/timesyncd.conf 可指定国内 NTP 服务器
默认配置使用 systemd 内置的公共 NTP 池,但国内访问不稳定或延迟高。直接修改配置文件可提升同步成功率和精度:
sudo nano /etc/systemd/timesyncd.conf
取消注释并修改 [Time] 段落下的 NTP= 行,例如:
NTP=ntp.aliyun.com ntp1.aliyun.com
注意:
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 多个服务器用空格分隔,不要加逗号或换行
- 避免写成
https://或带端口(如:123),systemd-timesyncd只支持标准 NTP UDP 端口 - 改完必须重启服务:
sudo systemctl restart systemd-timesyncd - 验证是否生效:
timedatectl show-timesync会显示当前使用的服务器和同步状态
别用 crontab + ntpdate 做定时同步
虽然 crontab -e 添加 0 * * * * /usr/sbin/ntpdate ntp.aliyun.com 看似简单,但它有三个硬伤:
- 每次调用
ntpdate都是“跳跃式”校正,可能让正在运行的数据库、Kafka 或 TLS 连接瞬间中断(时间倒退或突变) -
ntpdate在 Ubuntu 22.04+ 已被标记为废弃,部分新镜像甚至不预装 - 它绕过 systemd 的时间管理机制,
timedatectl status中的System clock synchronized仍显示no,造成状态误判
如果确实需要更高精度(比如金融级毫秒级要求),应改用 chrony 并启用 makestep 等平滑校准策略,而不是回归 ntpdate。
time skew 超过 5 秒时 systemd-timesyncd 会拒绝同步
这是关键限制:当系统时间与真实时间偏差超过 5 秒,systemd-timesyncd 默认只做“缓慢调整”(slew),不会强制跳变。结果就是你看到 System clock synchronized: no,且 timedatectl show-timesync 显示 Frequency: 0.000 或 Root dispersion: 0.000 —— 实际上它已放弃同步。
解决办法只有两个:
- 手动先大幅校正一次:
sudo timedatectl set-time "2026-07-08 07:15:00"(确保误差缩到 5 秒内),再等systemd-timesyncd自动接管 - 或改用
chrony,它默认允许大偏差跳变(通过makestep 1 -1配置),更适合首次部署或长期离线后重连的场景
这个阈值不可通过 /etc/systemd/timesyncd.conf 修改,是硬编码行为。运维中常被忽略,直到某台服务器因 BIOS 电池失效导致开机时间错乱数小时,才暴露出来。










