Linux 系統時間管理涉及硬體時鐘(RTC)、系統時鐘(Kernel time)、時區與網路時間協定(NTP)。CentOS 提供 hwclock/timedatectl、timeconfig(舊版)、chrony/ntp 三大設定路徑。本文整理三種方法的適用場景、指令操作與最佳實踐。
| 元件 | 說明 | 查看指令 |
|---|---|---|
| 硬體時鐘 (RTC) | 主機板電池供電,關機時維持走時 | hwclock --show |
| 系統時鐘 | 核心維護,開機從 RTC 讀取,精度高(納秒) | date, timedatectl |
| 時區設定 | /etc/localtime 指向 /usr/share/zoneinfo/ 對應檔案 | timedatectl status |
| UTC vs 本地時間 | RTC 可存 UTC 或本地時間,雙系統建議 UTC | timedatectl | grep RTC |
適用:離線環境、嵌入式裝置、舊版 CentOS 5/6。
hwclock --show
# 或
clock --show
hwclock --set --date "2024-03-15 14:30:00"
# 格式: YYYY-MM-DD HH:MM:SS
# 系統時間 → 硬體時間 (關機前執行)
hwclock --systohc
# 或
hwclock -w
# 硬體時間 → 系統時間 (開機自動執行)
hwclock --hctosys
ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
# 或
timedatectl set-timezone Asia/Taipei
適用:CentOS 6/7 文字介面設定、雙系統共存環境。
timeconfig
# 文字選單:選擇時區 → 詢問 "Hardware clock is set to UTC?" → Yes/No
設定結果寫入 /etc/sysconfig/clock:
ZONE="Asia/Taipei"
UTC=true
ARC=false
timedatectl set-local-rtc 0 # RTC 使用 UTC (推薦)
timedatectl set-timezone Asia/Taipei
timedatectl set-time "2024-03-15 14:30:00"
timedatectl set-ntp true # 啟用 NTP
適用:所有生產環境、叢集、需高精度同步場景。現代系統請使用 chrony(CentOS 7+ 預設),取代舊版 ntpd。
# /etc/chrony.conf
server time.google.com iburst
server time.cloudflare.com iburst
server ntp.aliyun.com iburst
allow 192.168.0.0/16 # 允許區網客戶端同步
local stratum 10 # 斷網時提供本地時間
systemctl enable --now chronyd
firewall-cmd --permanent --add-service=ntp
firewall-cmd --reload
# /etc/chrony.conf
server 內網NTP伺服器IP iburst
# 或直接使用公共 NTP
server time.google.com iburst
server time.cloudflare.com iburst
systemctl enable --now chronyd
chronyc -a makestep # 強制立即階躍同步
# 或舊版
ntpdate -u time.google.com
chronyc sources -v
chronyc tracking
ntpq -p # 相容 ntpd 指令
# 1. 設定時區
timedatectl set-timezone Asia/Taipei
# 2. 設定系統時間 (若無 NTP)
timedatectl set-time "2024-03-15 14:30:00"
# 3. 同步至硬體時鐘
hwclock -w
# 4. 啟用 NTP 自動同步 (Chrony)
timedatectl set-ntp true
# 等同 systemctl enable --now chronyd
| 現象 | 原因與解決 |
|---|---|
| 雙系統 (Windows + Linux) 時間相差 8 小時 | Windows 預設 RTC=本地時間,Linux 預設 RTC=UTC。 Linux 執行 timedatectl set-local-rtc 1 --adjust-system-clock 或 Windows 修改註冊表 RealTimeIsUniversal=1 |
| 虛擬機時間漂移 | 安裝 chrony 並啟用 ntp,宿主機開啟時間同步服務 |
| ntpdate: no server suitable for synchronization found | 防火牆封鎖 UDP 123,或 NTP 伺服器不可達,換用 chrony 並指定可達伺服器 |
| RTC time is in the past | 主機板電池耗盡,更換 CR2032 電池 |
CentOS 系統時間管理現代最佳實踐:RTC 使用 UTC (timedatectl set-local-rtc 0) + 正確時區 + Chrony NTP 自動同步。手動設定僅用於離線/初始化場景。雙系統環境務必統一 RTC 模式避免時間跳躍。
Ubuntu 筆電 Bumblebee 3.0 "Tumbleweed" 散熱優化:PPA 來源更新、ironhide 移除、bbswitch 切顯卡完整實戰
Linux reconfig 指令使用教學:轉換 XFree86 舊版配置檔
Linux man 手冊頁完整使用指南:章節、導航與搜尋技巧
Linux 刪除 Swap 交換文件/分區殘留文件:.swp 恢復文件清理與 Vim 會話管理
Linux 系統將 Sublime Text 固定到啟動器的完整教學
netstat 網路連線監控瑞士刀:參數全表、TCP/UDP/監聽/統計/路由表/多重廣播、連線狀態解讀、故障排查實戰