最基础校准方式是先用date命令设系统时间(需root权限,格式如sudo date -s "2026-07-21 13:45:00"),再执行sudo hwclock --systohc同步至硬件时钟,否则重启后时间丢失;还需确认时区正确并建议启用NTP自动同步。

直接用 date 命令改系统时间,再用 hwclock --systohc 同步到硬件时钟,是最基础也最常用的校准方式。关键不是“能不能改”,而是改完是否写入硬件、是否考虑时区和持久性。
用date命令设置系统时间
必须有 root 权限(通常加 sudo),时间格式要严格:
- 推荐格式:
date -s "YYYY-MM-DD HH:MM:SS",例如:sudo date -s "2026-07-21 13:45:00" - 旧式格式也支持:
date MMDDhhmm[[CC]YY][.ss],比如sudo date 072113452026.00表示同上时间 - 设完立刻执行
date查看是否生效,输出应与设定一致
为什么必须同步到硬件时钟
Linux 区分两种时钟:系统时钟(内核维护,断电丢失)和硬件时钟(RTC,靠主板电池供电)。重启时系统会从硬件时钟读取初始时间。如果只改系统时间不写入硬件,下次开机就退回去了。
- 执行
sudo hwclock --systohc,把当前系统时间“存进”硬件时钟 - 可加
--verbose查看操作细节:sudo hwclock --systohc --verbose - 验证是否成功:运行
hwclock --show,输出时间应接近刚设的系统时间(允许几秒误差)
常见误区和补充要点
手动校准容易忽略几个隐性问题:
-
时区没调对,时间看起来还是错的:先确认时区是否为 Asia/Shanghai,用
timedatectl | grep "time zone"查看,不对就执行sudo timedatectl set-timezone Asia/Shanghai - 虚拟机环境特别容易漂移:VMware 或 VirtualBox 中,建议开启客户机时间同步功能,否则即使手动设了,几分钟后又偏了
-
不建议长期依赖手动校准:生产环境务必启用 NTP 或 Chrony 自动同步,比如
sudo timedatectl set-ntp true(启用 systemd-timesyncd)
手动设时间+写入硬件,两步缺一不可。看似简单,但跳过 hwclock --systohc 这步,等于白设。


















