家用迷你伺服器自從升級 Debian 12後又變得好玩起來,不再因 OS 版本太舊這個不能裝那個不能用,我又開始玩一堆有的沒的。

上回學會用 bash 發資安事件通知給 Slack ,這回我弄了一個定期狀態檢查,用 cron 每小時傳一次統計到 Slack,但發現一個小問題,排程設每小時的 30 分執行,但實際執行時間卻是 31 分。

我是用 VSCode 連上 Debian 遠端寫 Code,二話不說直接在 Github Copilot Chat 發問,Copilot 教我可以用 timedatectl status 檢查。查詢結果,Debian 時間果然慢了一分鐘,而且沒設 NTP ,照著 Copilot 教學用 sudo timedatectl set-ntp true 想設定自動校則會出錯。

jeffrey@debian12:~/$ timedatectl status
               Local time: 四 2025-10-09 20:26:52 CST
           Universal time: 四 2025-10-09 12:26:52 UTC
                 RTC time: 四 2025-10-09 12:26:53
                Time zone: Asia/Taipei (CST, +0800)
System clock synchronized: no
              NTP service: n/a
          RTC in local TZ: no
jeffrey@debian12:~/$ sudo timedatectl set-ntp true
Failed to set ntp: NTP not supported

有趣的部分來了,這回我沒爬文找教學,一時興起切到 Copilot Agent 模式問 Copilot 為什麼會遇到 Failed to set ntp: NTP not supported 錯誤,Copilot 說應該是因為 systemd-timesyncd 沒有安裝或被停用了,問我要不要讓它接手檢查並修復

好啊! 看看 Copilot 有什麼本事也好。

Copilot 新開了一個專屬 bash 終端機視窗(下圖箭頭所指),可以傳指令過去執行並取回執行結果檢查,而每次執行指令前都會徵求我的同意,我的習慣也是每個指令都會看過才放行,一來審查二則學習。

一套組合拳下來,Copilot 先跑了 systemctl status systemd-timesyncddpkg -l | grep -E 'ntp|chrony|timesyncd' 確認主機真的沒有裝任何校時服務,接著 sudo apt updatesudo apt install -y systemd-timesyncdsudo timedatectl set-ntp true 安裝設定一氣喝成,

原來不只寫程式,這年頭連系統管理 AI 都能代勞惹!

不過,我的原則是「事情 AI 可以搶去做,但知識必須留下」,以下是 Debian 設定自動校時的背景知識整理。

  • Debian 12 安裝後預設未啟用自動校時,需自行設定。
  • systemd 是現代 Linux 發行版廣泛採用的系統與服務管理程序,取代了傳統 SysV init 系統。它負責系統啟動流程、服務啟動停止管理、硬體與登錄檔監控,以及日誌收集等,透過一致化機制簡化系統管理。
    常用指令包含 systemctl(服務管理)、journalctl(系統日誌查詢)、timedatectl(時間與時區管理)、hostnamectl(主機名稱與作業系統資訊)。
    (註:systemd 的歷史不算久,但 2010 年推出後很快席捲各大 Linux 發行版本,成為內建核心組件。難怪這些年沒看過有人再提 /etc/init.d ...)
  • timedatectl status 能一次查詢時間與 NTP 同步設定,超方便。
  • systemd-timesyncd 是 systemd 套件提供的輕量級 NTP 客戶端,負責與遠端時間伺服器同步本地系統時鐘。與 ntpd、chrony 等傳統服務相比,它設計簡潔、整合度高,是時間同步方案。
  • dpkg -l | grep -E 'ntp|chrony|timesyncd' 這招可以檢查是否有裝任何時間同步服務首選。
  • timedatectl set-ntp true 背後會執行 systemctl enable systemd-timesyncd.servicesystemctl start systemd-timesyncd.service,啟用 systemd-timesyncd 並設為開機後自動執行。


Comments

Be the first to post a comment

Post a comment