在某些情境下(例如測試排程、模擬過期憑證、驗證時間相關功能),我們可能需要臨時修改 Ubuntu 系統時間。但因為 Ubuntu 預設會透過 NTP(網路時間同步)自動校正時間,所以必須先停用 NTP,才能手動設定日期與時間。
本文將示範如何安全地修改時間,並在測試完成後恢復正確時間。
一、確認目前時間狀態
先查看系統目前的時間與 NTP 狀態:
timedatectl
範例輸出:
Local time: Fri 2025-09-05 10:30:00 CST
Universal time: Fri 2025-09-05 02:30:00 UTC
RTC time: Fri 2025-09-05 02:30:00
Time zone: Asia/Taipei (CST, +0800)
NTP enabled: yes
二、停用 NTP
Ubuntu 預設會透過 systemd-timesyncd
或其他 NTP 服務自動同步時間。
在修改時間之前,必須先停用 NTP:
timedatectl set-ntp no
三、手動設定時間
使用 date -s
指令修改系統時間,例如要改成 2025 年 7 月 1 日 12:00:00:
sudo date -s "2025-07-01 12:00:00"
修改後可以再次確認:
date
或
timedatectl
四、重新啟用 NTP
測試完成後,建議讓系統恢復自動校時功能,以避免時間長期不正確。
重新啟用 NTP:
timedatectl set-ntp yes
如果要立即生效,可以手動重啟同步服務:
sudo systemctl restart systemd-timesyncd
幾秒到幾分鐘後,系統時間就會與網路時間伺服器同步。
五、容器環境的注意事項
如果你的 Ubuntu 是 Docker 宿主機,所有容器會直接繼承宿主機的時間。
換句話說,改宿主機時間 → 容器時間自動跟著改,不需要在容器內另外設定。
你可以在容器內檢查:
docker exec -it <容器名稱> date
六、總結
- 停用 NTP:
timedatectl set-ntp no
- 手動改時間:
sudo date -s "YYYY-MM-DD HH:MM:SS"
- 還原自動同步:
timedatectl set-ntp yes
這種方法很適合用於測試環境。如果是正式環境,建議不要隨意改動系統時間,以免影響資料庫、憑證驗證或排程任務。