linux时间不准需先修正时区为asia/shanghai、同步硬件时钟并设rtc为utc,再用chrony配置国内ntp源(如ntp.aliyun.com)、启用服务、强制makestep,并通过chronyc tracking/sources验证同步状态。

Linux系统时间不对,不是改完date就完事了——必须让chronyd持续校准,否则重启或过几小时又偏了。
先确认时区和硬件时钟是否正确
时间不准,八成第一步就错了:系统以为自己在纽约,却实际在北京。不修这个,NTP同步再准也没用。
- 检查时区:
timedatectl | grep "Time zone",输出必须含Asia/Shanghai;如果不是,运行sudo timedatectl set-timezone Asia/Shanghai - 对比系统时间与硬件时钟:
date和hwclock -r,若偏差明显(比如超过1分钟),立刻执行sudo hwclock --systohc把当前系统时间写入硬件时钟 - 确认硬件时钟设为UTC模式:
timedatectl status里看RTC in local TZ: no;如果是yes,运行sudo timedatectl set-local-rtc false
用 chrony 配置 NTP 同步(现代系统默认方案)
别碰ntpd或ntpdate——它们在 RHEL 8+/Ubuntu 20.04+ 上已弃用,启动慢、抗网络抖动差,虚拟机里尤其容易失步。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 安装:
sudo apt install -y chrony(Debian/Ubuntu)或sudo dnf install -y chrony(RHEL/Fedora) - 编辑配置:
sudo nano /etc/chrony.conf,删掉或注释所有pool行,添加至少两个国内源:server ntp.aliyun.com iburst server time1.tencentyun.com iburst
iburst参数关键:首次连接时发多个包,加快初始同步速度 - 启用服务:
sudo systemctl enable --now chronyd - 强制立即同步一次:
sudo chronyc makestep(跳过默认的“缓慢调整”策略,适合偏差>3秒时)
验证 chrony 是否真在工作
服务 running ≠ 时间已对齐。常见静默失败是防火墙拦了 UDP 123 端口,或配置没生效。
- 查同步状态:
chronyc tracking,重点关注Offset字段——理想值应<50ms;若显示0.000000000 seconds但实际时间仍错,说明时区或硬件时钟还没修好 - 查上游源是否被选中:
chronyc sources -v,目标服务器前要有*号;若全是^或~,说明连不上,优先检查firewall-cmd --list-ports是否放行了123/udp - 查服务日志:
journalctl -u chronyd -n 20 --no-pager,留意Could not open socket(端口被占)、No suitable source found(DNS解析失败或源不可达)等错误
临时救急:不用 chrony 的快速校准
只适用于测试机、离线环境或 chrony 暂时起不来的情况。不能替代长期同步。
- 手动设时间(慎用):
sudo date -s "2026-09-20 22:06:00",然后立刻执行sudo hwclock --systohc,否则重启即失效 - 用 systemd-timesyncd(轻量替代):
sudo timedatectl set-ntp true,再编辑/etc/systemd/timesyncd.conf,在NTP=后填cn.pool.ntp.org time1.aliyun.com,最后sudo systemctl restart systemd-timesyncd - 绝对避免:
ntpdate命令——它已被标记为废弃,且会与 chrony 冲突,强行使用可能触发chronyd自动退出
最常被忽略的一点:chrony 同步需要时间收敛。刚配好看到Offset还是几百毫秒,别急着重装,等 2–3 分钟再chronyc tracking;如果 10 分钟后仍无*或Offset>1000ms,基本就是网络层问题——不是配置错了,是出不去。










