ubuntu RTC time改为Local time一样时区的时间

ubuntu RTC time改为Local time一样时区的时间
内容目录

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.释疑

  1. RTC(Real Time Clock)

    • 是主板上独立的一个芯片,有自己的电池
    • 即使服务器关机,RTC 仍然能保持时间
    • 系统启动时,Linux 会从 RTC 读取时间来初始化系统时间
  2. 系统时钟(System Clock / Kernel Clock)

    • Linux 内核维护的时钟
    • 运行时不断计数毫秒/秒
    • 系统关机后,这个时钟会丢失,需要依赖 RTC 来恢复
  3. 两者关系

时钟类型 功能
RTC(硬件时钟) 硬件保持的时间,关机也不会丢失
System Clock(系统时钟) Linux 内核维护的运行时间,启动时从 RTC 读取
  • hwclock 命令就是操作 RTC 的工具

    • hwclock --systohc → 把系统时间写入 RTC
    • hwclock --hctosys → 把 RTC 读到系统时间
  1. Local time → 系统按时区显示的时间(CST +8),就是你平常看到的时间。
  2. Universal time → 系统内部存储的 UTC 时间,不受时区影响。
  3. 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)。


Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注