跳转到内容

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


上一章 | 下一章

华夏公益教科书