首页 > 教程攻略 > 热点新闻 >001谁懂啊!Linux 系统时间改对后总自动回退,今天彻底解决

001谁懂啊!Linux 系统时间改对后总自动回退,今天彻底解决

来源:互联网 时间:2026-07-27 09:35:54

很多用户都遇到过这种情况:明明手动修改了 Linux 系统时间,没过几分钟或者重启之后,又被自动改回去了。原因其实很明确——系统开启了网络时间同步,但同步源出了问题,导致时间被“拉回”到错误的时间。

一、问题诊断

打开终端,先执行下面这条命令,看看当前时间的状态:

timedatectl status

重点关注这几个字段:

Local time

:当前系统时间

RTC time

:主板硬件时钟时间

Network time on

:是否启用网络时间同步

NTP synchronized

:NTP 是否同步成功

如果 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,配置时注意区分服务名称。