为什么我的 Linux 系统时间总是漂移不同步?
使用 chrony、timedatectl 和网络检查来诊断和修复 Linux 时钟漂移与 NTP 同步问题。
快速开始
Linux 时钟漂移通常意味着 NTP 或 chrony 没有同步,或者时区配置错误。按下面的步骤排查原因并修复。
症状
检查 chrony 是否真的在同步时钟
这是判断时钟是否被校正的最快方法。tracking 输出会显示当前偏移量、层级和参考服务器;sources 输出列出可用的 NTP 服务器。如果参考 ID 是 .LOCL、层级为 0,或者偏移量是秒级而不是毫秒级,说明 NTP 没有工作。
确认 chrony 是否在正常校准系统时间,以及正在使用哪些 NTP 服务器。
$ chronyc tracking && chronyc sources -v如果时区不对,先修正时区
时钟漂移和时区错误是两个不同的问题,但时区配置错误会让所有时间戳看起来都不对,干扰排查。用 timedatectl 设置正确的时区,然后确认 NTP 服务已启用并处于活动状态。如果时区本来就正确,这一步可以跳过。
timedatectl 可以查看、设置时区并控制 NTP 时间同步,不用手动软链 /etc/localtime。
$ sudo timedatectl set-timezone Asia/Shanghai▾ 撤销
$ sudo timedatectl set-timezone UTC验证到 NTP 服务器的网络稳定性
NTP 需要稳定的网络路径。对 NTP 服务器或网关持续 ping,观察是否有丢包或延迟尖峰。如果回复稳定、时间戳一致,说明网络不是同步失败的原因;如果看到丢包,先解决网络问题再指望 NTP 保持时间。
让 ping 一直运行,并在每条回复前打印 Unix 时间戳,方便定位丢包发生的具体时间。
$ ping -D 8.8.8.8如何确认已解决
再次运行 chronyc tracking,确认偏移量很小(几毫秒以内)、stratum 不为 0,且参考 ID 是真实的 NTP 服务器。同时检查 timedatectl 显示 NTP synchronized: yes。
一键全部撤销
上面每一条命令都可以撤销。按此顺序执行即可全部还原。
$ sudo timedatectl set-timezone UTC执行前请先确认——部分步骤之间可能并非相互独立。
来源
- chrony documentation依据: Official documentation for the tracking and sources commands and the meaning of Leap/Stratum/Root delay fields.
- timedatectl(1) - Linux manual page依据: timedatectl set-timezone sets the system timezone, list-timezones shows available zones, and set-ntp controls network time synchronization.
- ping(8) — send ICMP ECHO_REQUEST to network hosts依据: Documents -D to print timestamps before each line and -i interval / -c count semantics.
- chronyc(1) - command-line interface for chrony依据: chronyc tracking reports system time, last offset and stratum; chronyc sources shows the NTP servers chrony is using and their reach/state.
最后验证: 2026-09-22