Linux 擁有兩套獨立計時系統:系統時間 (Kernel 維護,開機後由 CPU tick 計數) 與 硬體時間 (RTC/CMOS,主板電池供電)。兩者約每 11 分鐘自動同步一次,但手動修改系統時間後需手動寫入硬體,否則重開機會復原。
# 1. 修改系統日期 (例如 2007-07-13)
date -s "07/13/2007"
# 2. 修改系統時間 (例如 11:55:00)
date -s "11:55:00"
# 3. 將系統時間寫入硬體時鐘 (二擇一)
hwclock --systohc
# 或
clock --systohc
| 操作目的 | 命令 | 說明 |
|---|---|---|
| 查看系統時間 | date | 顯示當前系統日期時間 |
| 查看硬體時間 | hwclock --show 或 clock --show | 讀取 CMOS 時間 |
| 系統時間 → 硬體時間 | hwclock --systohc | 開機後手動修改時間必做此步 |
| 硬體時間 → 系統時間 | hwclock --hctosys | 開機時自動執行,亦可手動修正 |
| 同時設定日期時間 | date -s "2024-12-25 14:30:00" | 支援多種格式,man date 查看詳情 |
# 安裝 NTP 服務
yum install ntp # CentOS/RHEL
apt-get install ntp # Ubuntu/Debian
# 設定時間伺服器 (編輯 /etc/ntp.conf)
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
# 啟用並設定開機自啟
systemctl enable ntpd
systemctl start ntpd
# 立即強制同步
ntpdate -u pool.ntp.org
hwclock --systohc # 同步至硬體
# 查看可用時區
timedatectl list-timezones | grep Asia
# 設定時區 (以台北為例)
timedatectl set-timezone Asia/Taipei
# 或傳統方式
ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
生產環境務必部署 NTP 自動同步,避免手動維護導致時間漂移影響日誌分析、資料庫複寫、憑證驗證等關鍵服務。