在 Ubuntu(或任何 Linux 系统)上,系统时间戳“慢了几秒”通常不是内核 bug,而是时间同步机制或硬件时钟的问题。下面按最常见原因逐一说明,并给出排查/解决办法。
Ubuntu 默认使用:
systemd-timesyncd(桌面/服务器默认)chrony / ntpd如果:
系统时间就会基于硬件时钟(RTC)慢慢跑,可能慢几秒。
✅ 检查:
timedatectl status
重点看:
System clock synchronized: yes
NTP service: active
如果不是 yes / active,就是没同步。
✅ 修复:
sudo timedatectl set-ntp true
老旧机器或虚拟机常见问题:
现象:
✅ 检查硬件时间:
sudo hwclock --show
✅ 用系统时间写回硬件:
sudo hwclock --systohc
⚠️ 如果是虚拟机,应让宿主机负责时间。
例如:
看起来像“慢 8 小时”,不是几秒,但容易混淆。
✅ 检查时区:
timedatectl
✅ 设置时区(示例):
sudo timedatectl set-timezone Asia/Shanghai
某些程序:
CLOCK_MONOTONIC 而非 CLOCK_REALTIME这不是系统时间慢,而是程序行为。
✅ 测试系统真实时间:
date +%s
对比: https://www.time.is/
✅ 虚拟机建议:
qemu-guest-agentchrony 而不是 timesyncd在极端情况下:
gettimeofday() 调用稍晚但通常误差 < 1ms,不会“几秒”。
timedatectl status
date
sudo hwclock --show
ping -c 3 ntp.ubuntu.com
Ubuntu 时间戳慢几秒,99% 是因为 NTP 没同步或硬件时钟不准,而不是系统“算错时间”。
如果你愿意,可以贴一下:
timedatectl status
的输出,我可以帮你精确判断是哪一种情况。