Linux 系統時間不準會導致日誌時間錯亂、定時任務失效、SSL 憑證驗證失敗、資料庫複製延遲。本文系統講解 date 手動修改、hwclock 硬體時鐘同步、NTP/chrony 自動校時 三大體系,並釐清「系統時鐘 vs 硬體時鐘」關鍵概念與虛擬機注意事項。

| 時鐘 | 位置 | 斷電保持 | 管理者 | 查看指令 |
|---|---|---|---|---|
| 系統時鐘 (軟體時鐘) | 核心記憶體 | 否 | Linux 核心 | date |
| 硬體時鐘 (RTC, CMOS) | 主板晶振 | 是 (電池) | BIOS/UEFI | hwclock |
date --set='NEW_DATE'
# NEW_DATE 可讀格式: "Sun, 28 Sep 2014 16:21:42" 或 "2014-09-29 16:21:42"
date +'%Y%m%d %H%M' --set='20140928 1518'

date --set='+5 minutes' # 往前 5 分鐘
date --set='-2 weeks' # 往後 2 週
date --set='+3 months' # 往前 3 月
date --set='-3 months +2 weeks -5 minutes' # 組合調整

hwclock --systohc
# 或
hwclock -w
hwclock --hctosys
hwclock --show && date
# 若差異 > 1 秒,建議同步
虛擬機注意:hwclock 在 VMware/KVM/VirtualBox 通常報錯或無效,請跳過此步,直接用 chrony/ntpd。
# 安裝
sudo apt/dnf/yum install chrony
# 啟用
sudo systemctl enable --now chronyd
# 配置 /etc/chrony.conf 指定優質 NTP 源
# 推薦中國區源:
server ntp.aliyun.com iburst
server ntp.tencent.com iburst
server cn.pool.ntp.org iburst
server time.cloudflare.com iburst
# 重啟生效
sudo systemctl restart chronyd
# 查看同步狀態
chronyc sources -v
chronyc tracking

sudo apt/dnf/yum install ntpdate
sudo ntpdate -u cn.pool.ntp.org
hwclock --systohc # 同步到硬體時鐘 (實體機)
sudo apt/dnf/yum install ntp
sudo systemctl enable --now ntpd
# 配置 /etc/ntp.conf
hwclock --systohc 定時任務 (每日/關機腳本)/etc/localtime、/usr/share/zoneinfo,或運行 sidecar chronyAsia/Shanghai (或 UTC),避免夏令時混淆node_timex_offset_seconds > 1s 告警#!/bin/bash
echo "=== 系統時間 ==="; date -R
echo "=== 硬體時間 ==="; hwclock --show 2>/dev/null || echo "VM/無權限"
echo "=== 時區 ==="; timedatectl | grep "Time zone"
echo "=== NTP 狀態 ==="; chronyc tracking 2>/dev/null | grep -E "^(Reference ID|Stratum|System time)" || ntpq -p 2>/dev/null | head -5
掌握 date 手改、hwclock 雙向同步、chrony 自動校時 三板斧,並理解「雙時鐘」機制,Linux 系統時間將永遠精準可靠,為日誌分析、分散式協作、合規審計奠定堅實時間基石。