伺服器長期運行會導致系統時間偏移,影響日誌分析、資料庫同步、定時任務等關鍵業務。NTP(Network Time Protocol)是解決時間同步的標準協定。本文說明如何在 Ubuntu/Debian 系統上,透過 cron.daily 實現每日自動校時,並提供多 NTP 伺服器容錯寫法。
NTP(Network Time Protocol)基於 UDP 埠 123,採用階層式時間源架構,可將客戶端時間精確同步至毫秒級。Ubuntu 預設啟動時同步 ntp.ubuntu.com,但伺服器鮮少重啟,需定期主動校時。
sudo nano /etc/cron.daily/timeupdate
#!/bin/bash
ntpdate ntp.ubuntu.com
sudo chmod 755 /etc/cron.daily/timeupdate
/etc/cron.daily/ 目錄下的腳本會由 anacron 每天自動執行一次,無需額外設定 crontab。
為防單一 NTP 伺服器不可用,可在腳本中列出多個伺服器,ntpdate 會依序嘗試直到成功:
#!/bin/bash
ntpdate ntp.ubuntu.com pool.ntp.org time.stdtime.gov.tw
常用公共 NTP 伺服器:
pool.ntp.org(全球池)time.stdtime.gov.tw(台灣標準時間)cn.pool.ntp.org(中國大陸池)time.windows.com、time.apple.com# 手動測試
sudo ntpdate -q ntp.ubuntu.com
# 查看系統時間
date
# 查看硬體時鐘
hwclock --show
chrony 或 ntpd),減少外部依賴並提升精度。hwclock --systohc 將系統時間寫入 BIOS。