Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 系統時間與時區設定完整指南:date、hwclock、timedatectl

編輯:Linux 教學

Linux 擁有兩種時鐘:系統時鐘(核心維護、啟動時由硬體時鐘初始化)與硬體時鐘 (RTC)(主板電池供電、BIOS/UEFI 設定)。正確同步兩者並設定時區,是伺服器日誌分析、定時任務、分散式系統、資料庫一致性的基礎。

現代標準工具:timedatectl (systemd)

RHEL 7+/CentOS 7+/Ubuntu 16.04+/Debian 9+ 皆預設使用 systemd,timedatectl 可統一管理:

# 查看完整狀態
timedatectl status

# 列出所有时区
timedatectl list-timezones
# 篩選亞洲/台北
timedatectl list-timezones | grep -i taipei

# 設定時區(立即生效,寫入 /etc/localtime)
timedatectl set-timezone Asia/Taipei

# 設定系統時間(格式:YYYY-MM-DD HH:MM:SS)
timedatectl set-time "2024-12-25 14:30:00"

# 設定硬體時鐘使用 UTC(推薦)或本地時間
timedatectl set-local-rtc 0  # 0=UTC, 1=本地時間(雙開Windows建議1)

# 啟用/停用 NTP 自動同步
timedatectl set-ntp true
timedatectl set-ntp false

傳統指令:date、hwclock(相容舊系統/腳本)

date:檢視/設定系統時間

# 顯示當前系統時間
date
date "+%Y-%m-%d %H:%M:%S %Z"

# 設定系統時間(需 root)
date -s "2024-12-25 14:30:00"
# 或分開設定日期/時間
date -s "2024-12-25"
date -s "14:30:00"

hwclock:檢視/設定硬體時鐘 (RTC)

# 顯示硬體時鐘
hwclock --show
# 或
hwclock -r

# 設定硬體時鐘(系統時間 → 硬體時鐘)
hwclock --systohc
# 或
hwclock -w

# 硬體時鐘 → 系統時間(開機時自動執行)
hwclock --hctosys
# 或
hwclock -s

# 直接設定硬體時鐘
hwclock --set --date="2024-12-25 14:30:00"

時區設定細節

方式一:timedatectl(推薦,自動處理 /etc/localtime)

timedatectl set-timezone Asia/Taipei

方式二:手動建立符號連結(傳統/嵌入式/無 systemd)

# 備份原本
mv /etc/localtime /etc/localtime.bak
# 建立連結到時區檔案
ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime

方式三:修改 /etc/sysconfig/clock (RHEL/CentOS 6 及舊版)

ZONE="Asia/Taipei"
UTC=true
ARC=false

修改後執行 tzdata-update 或重啟生效。

Debian/Ubuntu 互動式設定

dpkg-reconfigure tzdata

NTP 時間同步:chrony vs systemd-timesyncd

Chrony(企業級、支援間歇性連線、RHEL 7+ 預設)

# 安裝
dnf install chrony        # RHEL/Fedora
apt install chrony        # Debian/Ubuntu

# 設定 /etc/chrony.conf
server time.stdtime.gov.tw iburst
server time.google.com iburst
pool time.cloudflare.com iburst

# 啟用並啟動
systemctl enable --now chronyd

# 查看同步狀態
chronyc sources -v
chronyc tracking

systemd-timesyncd(輕量、桌面/容器適用)

# 設定 /etc/systemd/timesyncd.conf
[Time]
NTP=time.stdtime.gov.tw time.google.com
FallbackNTP=pool.ntp.org

# 啟用
timedatectl set-ntp true

雙開 Windows + Linux 時區衝突解決

Windows 預設 RTC 使用本地時間,Linux 預設使用 UTC。導致雙開時時間跳躍。

方案 A:Linux 改用本地時間(簡單)

timedatectl set-local-rtc 1 --adjust-system-clock

方案 B:Windows 改用 UTC(標準)

Windows 註冊表:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
新增 DWORD: RealTimeIsUniversal = 1

重啟 Windows 後雙方皆用 UTC,時間一致。

常見問題排查

  • 時間跳躍/倒退:檢查 NTP 來源是否可達、防火牆 UDP 123、chrony 來源狀態。
  • 虛擬機時間漂移:啟用 guest agent、宿主機 NTP 同步、避免同時運行 chrony + timesyncd。
  • 容器時間異常:容器共享宿主機核心時間,宿主機同步正確即可;勿在容器內運行 NTP 服務。
  • 日誌時間戳錯誤:確認 /etc/localtime 指向正確時區檔,重啟 rsyslog/journald。

快速備忘錄

任務現代指令傳統指令
看時間timedatectldate
設系統時間timedatectl set-time "..."date -s "..."
看硬體時間timedatectlhwclock --show
系統→硬體timedatectl set-local-rtc 0hwclock --systohc
硬體→系統自動/重啟hwclock --hctosys
設時區timedatectl set-timezone Asia/Taipeiln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
啟用NTPtimedatectl set-ntp truesystemctl enable --now chronyd
Copyright © Windows教程網 All Rights Reserved