内容目录
1.环境
ubuntu 24.04
2.需求
RTC time改为Local time一样时区的时间
服务器经常手动调整时间触发活动任务做测试,ntp关闭
原来是
root@ubuntu1:~# timedatectl
Local time: Fri 2025-08-22 11:14:19 CST
Universal time: Fri 2025-08-22 03:14:19 UTC
RTC time: Fri 2025-08-22 03:14:48
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
3.解决
apt update
apt install util-linux-extra -y
# 设置 RTC 使用本地时间
timedatectl set-local-rtc 1
# 手动同步 RTC
hwclock --systohc
效果
Local time: Fri 2025-08-22 14:09:59 CST
Universal time: Fri 2025-08-22 06:09:59 UTC
RTC time: Fri 2025-08-22 14:09:59
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: yes
都改为UTC
timedatectl set-timezone Etc/UTC
timedatectl set-local-rtc 0
timedatectl set-ntp false
hwclock --hctosys
timedatectl
4.释疑
-
RTC(Real Time Clock)
- 是主板上独立的一个芯片,有自己的电池
- 即使服务器关机,RTC 仍然能保持时间
- 系统启动时,Linux 会从 RTC 读取时间来初始化系统时间
-
系统时钟(System Clock / Kernel Clock)
- Linux 内核维护的时钟
- 运行时不断计数毫秒/秒
- 系统关机后,这个时钟会丢失,需要依赖 RTC 来恢复
-
两者关系
时钟类型 | 功能 |
---|---|
RTC(硬件时钟) | 硬件保持的时间,关机也不会丢失 |
System Clock(系统时钟) | Linux 内核维护的运行时间,启动时从 RTC 读取 |
-
hwclock
命令就是操作 RTC 的工具hwclock --systohc
→ 把系统时间写入 RTChwclock --hctosys
→ 把 RTC 读到系统时间
- Local time → 系统按时区显示的时间(CST +8),就是你平常看到的时间。
- Universal time → 系统内部存储的 UTC 时间,不受时区影响。
- RTC time → 硬件时钟,默认也是 UTC(因为
RTC in local TZ: no
)。
如果你执行了:
timedatectl set-local-rtc 1
hwclock --systohc
效果会是:
- RTC 改为本地时间(CST 11:14),而不是 UTC。
Local time
还是 11:14 CST。- Universal time 会随系统时间变化,会变成
Local time - 8h
(UTC 03:14 → 现在还是 03:14,因为你同步时本地时间就是 11:14 CST)。
简单说:UTC 是系统参考时间,不影响你平时看本地时间。如果你修改系统时间,本地时间和 RTC 会跟着变,UTC 也会自动更新(只是显示为 UTC)。