001谁懂啊!Linux 系统时间改对后总自动回退,今天彻底解决
很多用户都遇到过这种情况:明明手动修改了 Linux 系统时间,没过几分钟或者重启之后,又被自动改回去了。原因其实很明确——系统开启了网络时间同步,但同步源出了问题,导致时间被“拉回”到错误的时间。
一、问题诊断
打开终端,先执行下面这条命令,看看当前时间的状态:
timedatectl status

重点关注这几个字段:
Local time
RTC time
Network time on
NTP synchronized
如果 Network time on 显示 yes,而 NTP synchronized 显示 no,那基本可以断定是同步源或服务的问题了。
二、最常见原因:NTP 服务异常(90% 概率)
手动修改时间后很快被自动覆盖,十有八九是因为系统启用了网络时间同步,但同步源不可用或配置有误。下面分两种情况处理。
方案一:临时关闭自动同步(适合离线环境)
# 关闭网络时间同步
sudo timedatectl set-ntp false
# 手动设置正确时间
sudo timedatectl set-time "2026-05-13 14:10:00"
# 将系统时间写入硬件时钟(关键!否则重启会丢失)
sudo hwclock --systohc
方案二:修复 NTP 同步(推荐,适合有网络环境)
先检查是否有多个时间服务在打架:
# 查看是否同时运行 chronyd 和 systemd-timesyncd
systemctl is-active chronyd systemd-timesyncd
如果两个都显示 active,必须停用一个。比如停用 chronyd,使用系统默认的 timesyncd:
sudo systemctl stop chronyd
sudo systemctl disable chronyd
# 或者反过来,停用 timesyncd 使用 chronyd(更稳定)
# sudo systemctl stop systemd-timesyncd
# sudo systemctl disable systemd-timesyncd
然后配置国内可靠的 NTP 服务器:
# 创建 timesyncd 配置目录
sudo mkdir -p /etc/systemd/timesyncd.conf.d/
# 编辑配置文件
sudo nano /etc/systemd/timesyncd.conf.d/ntp-servers.conf
写入以下内容:
[Time]
NTP=ntp.aliyun.com ntp.tencent.com cn.pool.ntp.org
保存退出(Ctrl+O,回车,Ctrl+X)。
重启服务并强制同步:
sudo systemctl restart systemd-timesyncd
sudo timedatectl set-ntp true
# 等待10秒后查看同步状态
timedatectl status
三、硬件时钟问题(重启后时间回退)
如果修改时间后重启系统才回退,说明硬件时钟本身不准确,系统启动时又从错误的时间读回来了。
# 查看系统时间和硬件时间差异
date && sudo hwclock -r
# 如果硬件时间慢5分钟,先把系统时间调对
sudo timedatectl set-time "2026-05-13 14:10:00"
# 强制将系统时间写入硬件时钟
sudo hwclock --systohc
# 验证写入成功
sudo hwclock -r
四、双系统时间冲突(特殊情况)
如果是 Windows + 银河麒麟双系统,而且时间差正好是整 8 小时(不是几分钟),那多半是 Windows 把硬件时间当作本地时间,而 Linux 默认当作 UTC。执行下面这条命令解决:
# 让 Linux 把硬件时间当作本地时间(与 Windows 一致)
sudo timedatectl set-local-rtc 1 --adjust-system-clock
五、终极解决方案(以上都无效时)
如果前面所有方法都试过了还是被覆盖,那就彻底禁用所有自动同步服务:
sudo systemctl stop chronyd ntpd systemd-timesyncd
sudo systemctl disable chronyd ntpd systemd-timesyncd
sudo timedatectl set-ntp false
手动设置时间并写入硬件:
sudo date -s "2026-05-13 14:10:00"
sudo hwclock -w
添加开机自动同步硬件时间(让系统启动时从硬件时钟读取):
sudo nano /etc/rc.local
在 exit 0 前添加一行:
/sbin/hwclock --hctosys
保存退出,然后赋予执行权限:
sudo chmod +x /etc/rc.local
六、注意事项
如果是虚拟机,请先检查宿主机时间是否准确,并关闭虚拟机的“与宿主机同步时间”功能。
如果以上方法都无效,可能是主板电池没电了,需要更换 CMOS 电池。
银河麒麟 V10 默认使用 systemd-timesyncd,不是传统的 ntpd,配置时注意区分服务名称。