Ubuntu環境下Traveler時區問題與TZ變數設定探討
在Ubuntu伺服器上部署IBM Domino Traveler 時,常會遇到「系統時區不一致」導致 Traveler 直接掛起的錯誤。這種問題在Red Hat 上較少發生,原因在於兩個環境在處理時區資料時的實作細節不同。
Traveler 與 Java 時區不一致的根本原因
Traveler 由 Domino 核心(C/C++)與 Java 兩段程式碼共同構成。Domino 取得作業系統時區資訊時,會回傳類似「W. Europe」的名稱,並支援夏令時間;而 Java 內部則使用 java.util.TimeZone 取值,若系統時區設定為 Etc/UTC 或未正確同步,Java 會回傳「Koordinierte Weltzeit (Etc/UTC)」(Daniel Nashed’s Blog)。兩者若不一致,Traveler 會在啟動時拋出 SEVERE 錯誤並停止服務,影響使用者連線與郵件同步。
Ubuntu 時區設定的常見陷阱
Ubuntu 預設時區為 Etc/UTC,且 NTP 同步是獨立於時區的。若使用者只更改硬體時間或手動輸入 date 指令,並不會自動更新 /etc/timezone 或 tzdata 的設定,這正是許多部署時區不一致的根源。常見的錯誤包括:
- 系統時間正確,但
timedatectl顯示時區仍為 UTC。 - Java 以 UTC 為基準,而 Domino 以本機時區為基準。
- Docker 容器內部未掛載
/etc/localtime,導致容器與宿主機時區不同。
解決方案:統一系統時區與 TZ 變數
1. 確認並設定正確時區
# 查看目前時區
timedatectl
# 重新設定時區為台北時間
sudo timedatectl set-timezone Asia/Taipei
上述步驟會將 /etc/timezone 與 /etc/localtime 重新連結到正確的時區資料檔,並同步到硬體時間。確認完成後,再次執行 timedatectl,應顯示:
Time zone: Asia/Taipei (CST, +0800)
2. 設定 TZ 環境變數
許多程式(包括 Java)會先讀取 TZ 環境變數作為時區參考。若此變數未設定,Java 會退回到 /etc/localtime,但在容器或某些服務啟動腳本中,TZ 可能被覆蓋。建議在系統啟動腳本或 Dockerfile 裡明確設定:
# /etc/profile 或 /etc/environment
export TZ=Asia/Taipei
或在 Dockerfile 中加入:
ENV TZ=Asia/Taipei
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
3. 同步 NTP 時間
確保系統時間與 NTP 伺服器同步,避免因硬體時間漂移造成的時差。安裝並啟用 systemd-timesyncd 或 ntpd:
# 安裝 timesyncd
sudo apt-get install systemd-timesyncd
sudo systemctl enable --now systemd-timesyncd
經過上述步驟後,Domino 與 Java 的時區資訊應完全一致,Traveler 便能順利啟動。
常見檢查清單
- 執行
date與timedatectl,確認時間與時區一致。 - 使用
java -XshowSettings:properties -version | grep timezone觀察 Java 取得的時區。 - 檢查
/etc/timezone與/etc/localtime是否正確連結。 - 若在容器內部,確認
/etc/localtime已掛載或以ENV TZ設定。
結論
Traveler 的時區錯誤主要來自於 Ubuntu 系統時區與 Java 時區的不一致。透過 timedatectl 重新設定正確時區、明確設定 TZ 環境變數,並確保 NTP 同步,即可在 Ubuntu 環境下穩定部署 Traveler,避免因時區不一致導致的服務中斷。
參考資料與原文來源
- Daniel Nashed, “Issues with Traveler timezone on Ubuntu,” 5 December 2025 (Daniel Nashed’s Blog)
- 「Ubuntu – 調整系統時間與時區設定」, noter.tw, 7 March 2012
- 「Ubuntu時間差八小時嗎? 一秒修復 Ubuntu 時區問題」, cjkuo.net, 13 October 2022
- 「Ubuntu 更換時區指令」, blog.lusw.dev, 2024
- 「ubuntu笔记:双系统下时间差问题的解决」, gsy00517.github.io, 2020
🧠本文由 DreamJ AI 技術新聞生成系統 自動撰寫並進行語意優化,僅供技術研究與教學使用。
請以原廠公告、CVE 官方資料與安全建議為最終依據。












發佈留言