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内