跳轉到內容

Ict-innovation/LPI/107.3

來自華夏公益教科書,開放的書籍,開放的世界

107.3 本地化和國際化

[編輯 | 編輯原始碼]

候選人應該能夠將系統本地化為除英語以外的其他語言。 此外,瞭解為什麼 LANG=C 在指令碼編寫中很有用。


關鍵知識領域

  • 區域設定。
  • 時區設定。



時間在 Linux 系統中非常重要。 許多工具,例如 Anacron、Crontab、備份、還原、更新管理器,都需要準確的時間才能正常執行。 計算技術的發展使計算機系統能夠即使在關閉計算機時也能保持時間。

Linux 系統上有兩種時鐘;

硬體時鐘又稱 RTC、即時時鐘、CMOS 時鐘、BIOS 時鐘。 此時鐘獨立於作業系統執行,即使在計算機關閉時也能執行,只要 CMOS 電池持續供電。

軟體時鐘又稱系統時鐘。 此時鐘透過系統計時器中斷執行。 通常,它將從 1970 年 1 月 1 日開始計算秒數。 它是 Linux 下的主要時鐘。 在啟動時,它會讀取硬體時鐘並從那裡繼續執行。

在 Linux 下,使用 2 個主要程式來控制 2 個時鐘。 硬體時鐘可以使用 hwclock 實用程式直接更改。 主要選項是

-r 或 –-show 列印當前時間

-w 或 –-systohc 將硬體時鐘設定為當前系統時間

-s 或 –-hctosys 將系統時間設定為當前硬體時鐘時間

# date; hwclock; hwclock -s; date

Mon Jul 9 22:20:23 EDT 2007

Mon 09 Jul 2007 11:19:01 PM EDT -0.414881 seconds

Mon Jul 9 23:19:02 EDT 2007

系統時鐘由 date 工具控制。 它也可以用來顯示系統時間。

語法:date [選項]

選項包括:+text_and_metacodes

要使用 date 實用程式顯示系統時間,您可以發出類似以下的命令

date "+現在是 %H 小時 %M 分鐘"

將有以下結果:現在是 14 小時 33 分鐘

在 Linux 中設定時間和日期

您可以使用兩種比較簡單的步驟來設定時間

1) 透過 BIOS 設定將硬體時鐘設定為 UTC。

2) 使用指令碼設定環境變數 TZ 為正確的時區tzselect

另一方面,系統日期可以使用 date 命令更改。 語法是

date MMDDhhmmCCYY[.ss]

注意:在 /etc/adjtime 檔案中,可以儲存校正因子以使時鐘儘可能準確。

# cat /etc/adjtime

0.000990 1184019960 0.000000

1184019960

LOCAL

# cat /etc/adjtime

-0.003247 1182889954 0.000000

1182889954

LOCAL

時區配置

時區只是您當地時間與 UTC 之間差異的度量。 /usr/share/zoneinfo 檔案將儲存所有可用時區的資訊。 在許多現代系統上,當在啟動過程的早期需要本地時區資訊時,此檔案 /usr/share 檔案系統需要被掛載。

除了 UCT(與 UTC 可互換使用)時間外,一些國家還應用“夏令時”,即每年特定日期將時鐘提前或推遲一小時的現象。 此類策略在 Linux 系統中可用/usr/share/zoneinfo/. 只要將相應的區域檔案複製到/etc/localtime,使用者可以確保時區的策略生效。

例如,如果我們複製/usr/share/zoneinfo/Nairobi到 /etc/localtime下次我們執行 date 時,它將為我們提供內羅畢的時間。 這是因為 date 將讀取/etc/localtime每次它執行時。

# cat /etc/timezone

France/Paris

# cat /etc/sysconfig/clock

# ZONE 引數僅由 system-config-date 評估。

# 系統的時區由 /etc/localtime 的內容定義。

ZONE="France/Paris"

UTC=false

ARC=false

使用設定系統時間tzconfig

您可以使用 tzconfig 實用程式修改您的時區。

# tzconfig

您當前的時區設定為 France/Paris

您要更改它嗎? [n]

您的時區不會被更改

使用 NTP

NTP 代表網路時間協議。 它在 RFC1305 中定義,用於在多個網路系統上提供時間函式的傳輸和維護。 使用最廣泛的 NTP 伺服器之一是 ntpd(ntp.isc.org)。 它透過精細的精度來糾正系統時鐘的任何差異,而不是一次或在幾小時內進行大的調整。

計算機透過向時間伺服器傳送訊息來同步其時間。 返回的時間會根據往返延遲的一半進行調整。 因此,時間的準確性取決於兩個方向的網路延遲。 網路越快(到時間伺服器的路徑越短),時間就越準確。

在圖形上,您應該能夠使用類似於下圖的對話方塊來設定您的 NTP 時間伺服器。

圖 107.3-2. 設定 NTP 伺服器

NTP 配置儲存在/etc/ntp.conf 中,但是 ntpd 守護程式必須在您儲存對配置檔案的任何更改後重新啟動。

配置客戶端以查詢 NTP 伺服器

一個名為 ntpd 的 NTP 守護程式用於定期查詢遠端時間伺服器。 所需的只是 /etc/ntp.conf 中的一個伺服器條目,/etc/ntp.conf指向公共或公司 NTP 伺服器。 公共 NTP 伺服器可以線上找到。

NTP 協議還可以根據一系列查詢來估計硬體時鐘的頻率誤差,此估計值寫入 driftfile 標籤所引用的檔案。

NTP 命令

ntpdate命令可用於從 NTP 時間伺服器設定系統時間,如下所示

========================================================================================

# ntpdate 0.us.pool.ntp.org

10 Jul 10:27:39 ntpdate[15308]: adjust time server 66.199.242.154 offset -0.007271 sec

NTP 伺服器以輪循方式執行,因此您下次執行 ntpdate 時,可能會查詢不同的伺服器。 當您挖掘 DNS 時,可以檢視從中選擇伺服器的池,如下所示。

輪循 NTP 伺服器池

# dig 0.pool.ntp.org +noall +answer | head -n 5

0.pool.ntp.org. 1062 IN A 217.116.227.3

0.pool.ntp.org. 1062 IN A 24.215.0.24

0.pool.ntp.org. 1062 IN A 62.66.254.154

0.pool.ntp.org. 1062 IN A 76.168.30.201

0.pool.ntp.org. 1062 IN A 81.169.139.140

ntpdate命令可以使用ntpd-q選項,如下所示。

使用設定系統時間ntpd -q

# ntpd -q

ntpd: time slew -0.014406s

注意:ntpd 命令使用 /etc/ntp.conf 中的時間伺服器資訊。 如果ntpd守護程式正在執行,ntpd-q將靜默退出,並在/var/log/messages 中留下錯誤訊息。 NTP 守護程式本身可以使用 ntpq命令進行查詢。



以下是使用的檔案、術語和實用程式的部分列表

  • /etc/timezone
  • /etc/localtime
  • /usr/share/zoneinfo
  • 環境變數
    • LC_*
    • LC_ALL
    • LANG
  • /usr/bin/locale
  • tzselect
  • tzconfig
  • date
  • iconv
  • UTF-8
  • ISO-8859
  • ASCII
  • Unicode


上一章 | 下一章

華夏公益教科書