Linux 系统时间不准需用 Chrony 或 NTP 同步,推荐 Chrony;检查 time、hwclock、timedatectl 状态;安装配置国内 NTP 源;手动 chronyc makestep 校准;虚拟机优先用宿主机同步,RTC 偏差执行 hwclock –systohc。

Linux 系统时间不准,常见于 虚拟机 、 云服务 器或长时间未联网的设备,会导致日志混乱、证书失效、分布式服务异常等问题。解决核心是用 NTP 或 Chrony 做时钟同步,Chrony 更适应网络不稳定或虚拟化环境,推荐优先使用。
确认当前时间状态和同步服务
先检查系统时间是否准确、是否已启用同步服务:
- 查看当前时间与硬件时钟:运行 date 和 hwclock –show,对比两者差异是否超过 1 秒
- 查同步状态:执行 timedatectl status,关注“System clock synchronized”是否为 yes,“NTP service”是否为 active
- 识别 后端 服务:多数新版发行版(如 CentOS 8+/RHEL 8+/Ubuntu 20.04+)默认用 chronyd;老系统可能用 ntpd。可用 ps aux | grep -E “(chronyd|ntpd)” 确认
安装并启用 Chrony(推荐方案)
若系统未预装 Chrony,先安装并配置可靠上游时间源:
- 安装:sudo apt install chrony(Debian/Ubuntu)或 sudo yum install chrony(RHEL/CentOS 7)或 sudo dnf install chrony(RHEL/CentOS 8+)
- 编辑配置:sudo nano /etc/chrony.conf,注释掉默认 pool 行,添加国内可信源(例如):
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server cn.pool.ntp.org iburst
iburst 可加速初始同步 - 重启并启用服务:sudo systemctl restart chronyd && sudo systemctl enable chronyd
手动强制同步与验证效果
安装配置后,可立即触发一次校准,并持续观察稳定性:
- 手动同步(仅限 chrony):sudo chronyc makestep —— 强制将系统时间一步调准(跳变允许,适用于偏差>3 秒)
- 查看同步状态:chronyc tracking 查看偏移(Offset)、估计误差(Skew)、同步源;chronyc sources -v 查看所有 NTP 服务器连接详情
- 长期监控建议:运行 watch -n 10 ‘chronyc tracking’ 每 10 秒刷新一次,观察 Offset 是否稳定在±50ms 内
处理严重时间漂移与特殊场景
若系统时间偏差极大(如数小时以上),或运行在 KVM/Xen/VMware 等 虚拟环境 中,需额外注意:
- 虚拟机慎用系统时钟同步:宿主机可能通过 hypervisor 向客户机注入时间(如 VMware Tools 或 QEMU guest agent),此时应禁用 chrony/ntpd,改用宿主机时间同步机制,避免冲突
- 硬件时钟(RTC)校准:若每次重启时间都严重偏移,说明硬件时钟不准,同步后执行 sudo hwclock –systohc 将系统时间写入硬件时钟
- 禁止时间跳跃的场景 (如数据库、 金融 交易系统):用 makestep 1 -1 配置 chrony.conf,让 chronyd 只对≤1 秒偏差做渐进调整,更大偏差则不自动修正,需人工干预