温馨提示×

ubuntu时间戳为何不准

小樊
45
2026-09-10 05:05:09
栏目: 智能运维

在 Ubuntu(以及绝大多数 Linux 发行版)里,“时间戳不准”通常不是系统算错时间,而是时间来源或配置有问题。下面按常见原因逐条说明,并给出排查/解决办法。


一、最常见原因:没有开启 NTP 时间同步

Ubuntu 默认不一定自动同步网络时间,尤其是:

  • 最小化安装
  • 容器 / 虚拟机
  • 手动改过时间

检查时间同步状态

timedatectl

重点看这几行:

               Local time: ...
           Universal time: ...
                 RTC time: ...
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes   <-- 必须是 yes
              NTP service: active <-- 必须是 active

如果是 no,说明没同步。

开启 NTP 同步

sudo timedatectl set-ntp true

二、虚拟机 / 云主机时间漂移

虚拟机的“硬件时钟”是模拟的,容易漂移。

现象

  • 重启后时间突然变早或变晚
  • 几天后慢几分钟

解决

  • 云服务器:直接用云厂商 NTP
  • 虚拟机(VMware / VirtualBox):
sudo apt install open-vm-tools

或确保宿主机时间正确


三、RTC(主板时钟)设置错误

Ubuntu 默认认为 RTC 是 UTC 时间,Windows 认为是本地时间,双系统会冲突。

查看 RTC 模式

timedatectl | grep RTC

如果是双系统(Windows + Ubuntu)

建议让 Ubuntu 使用本地时间:

sudo timedatectl set-local-rtc 1

四、时区设置错误(看起来“不准”)

时区错了,时间戳显示就会差几小时。

timedatectl

修改时区(例如中国):

sudo timedatectl set-timezone Asia/Shanghai

五、程序用的是“错误时间源”

有些程序:

  • 用的是 Date.now()(JS)
  • 或容器里没挂载宿主机时间
  • 或 Docker 容器时间不同步

Docker 示例

docker run -v /etc/localtime:/etc/localtime:ro ...

六、硬件时钟电池没电(物理机)

老机器 CMOS 电池没电:

  • 断电后时间归零
  • 每次开机都回到 1970 或 2000 年

七、人为或程序改过时间

journalctl -xe | grep time

看是否有:

  • set-time
  • date -s

快速自检清单 ✅

timedatectl
date
cat /etc/timezone

如果你愿意,可以把 timedatectl 的输出贴出来,我可以直接帮你判断是哪一种原因。

0 踩