[Linux] Linux设备手动设置时间并同步到硬件

1. 查看时间

1.1 查看系统时间

date

得到结果

Thu Jul 24 11:43:37 CST 2025

1.2 查看硬件时钟时间

硬件时钟是主板上的一块独立芯片,关机也能保持时间计数

hwclock --show
# 效果等于
# hwclock -r

得到结果

2025-07-24 11:44:15.790487+08:00

1.3 查看设备时区

timedatectl

得到结果

               Local time: Thu 2025-07-24 12:57:50 CST
           Universal time: Thu 2025-07-24 04:57:50 UTC
                 RTC time: Thu 2025-07-24 04:57:51
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
              NTP service: n/a
          RTC in local TZ: no

2. 设置时间

2.1 设置系统时间

sudo date -s "20250724 14:30:00"
# 或者单独设置日期和时间
# sudo date +%Y%m%d -s "20250724"
# sudo date +%T -s "14:30:00"

再查看时间

Thu Jul 24 14:30:04 CST 2025

2.2 设置时区

查看支持的时区列表

timedatectl list-timezones
# 会返回当前设备支持的时区列表,列表过长不再展示

再设置时区到重庆

sudo timedatectl set-timezone Asia/Chongqing

得到结果

               Local time: Thu 2025-07-24 14:38:45 CST
           Universal time: Thu 2025-07-24 06:38:45 UTC
                 RTC time: Thu 2025-07-24 05:08:59
                Time zone: Asia/Chongqing (CST, +0800)
System clock synchronized: no
              NTP service: n/a
          RTC in local TZ: no

2.2 系统时钟同步到硬件

运行以下命令即可

sudo hwclock --systohc
# 等同于
# sudo hwclock -w

2.3 硬件时钟读取到系统

运行以下命令即可:

sudo hwclock --hctosys
# 等同于
# sudo hwclock -s

3. 其他支持

3.1 硬件时钟使用UTC

sudo timedatectl set-local-rtc 0

3.2 硬件时钟使用本地时间

sudo timedatectl set-local-rtc 1

4. 建议:使用timedatectl

timedatectl是systemd生态系统的一部分,它会自动同步所有系统组件的时间设置

4.1 和 date -s 的区别

使用date -s只修改系统时钟,而timedatectl会:

  • 更新系统时钟
  • 自动同步到硬件时钟(RTC)
  • 通知所有系统服务时间已变更
  • 处理时区转换逻辑

4.2 自动协调NTP服务

使用date -s手动修改时间可能导致NTP服务异常重置你的设置
timedatectl会自动禁用NTP同步(临时)直到你完成手动设置

4.3 自动处理时区转换

sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-time "14:30:00"  # 明确知道这是上海时间

4.4 最佳实践建议

# 设置时区(优先步骤)
sudo timedatectl set-timezone Asia/Shanghai

# 设置时间(自动同步RTC)
sudo timedatectl set-time "14:30:00"

# 验证结果
timedatectl
hwclock --show
posted on 2025-07-24 13:27  风惊庭前叶  阅读(236)  评论(0)    收藏  举报