Timezones

译自: 

http://www.linuxfromscratch.org/hints/downloads/files/time.txt

 

描述: 你的Linux系统是多国的, 这不仅说有不同的语言, 它还可以分辨时区, 这意味着你可以对它进行设置.

 

准备: 本文基于lfs-bootscripts-1.11来写的, 但是应该很容易修改, 即使在启动脚本上有了很大的改动.

 

提示: 地球分为24个时区. 本地时间是根据距离英国Greenwich多少个时区计算出来的. 时间的差别是相对于Greenwich0时区. 例如, 在美国Indiana (我所在的地方)我们在-5时区. 就是说, 这儿比英国早了5个小时. 这赔偿地球转旋转. This compensates for the world turning.

 

Local vs. UTC

 

你要回答的第一个和最重要的问题是你是否想在你的机器中存储UTClocal time格式的时间? UTC(Universal Time Coordinated)GMT(Greenwich Mean Time)是相同的. 本地时间就是在PC上显示的与墙钟相同的时间. 每种格式都有各自的优点和缺点, 两者都会讨论到.

 

传统上, 所有POXIS机器 (例如, Solaris, BSD, UNIX)UTC格式的系统时间. 比较傻瓜的系统(主要是指Microsoft)要求用户以本地时间配置系统. 幸运的是, Linxu对一般的UTC机器和受到微软毒害的以local time作为他们的系统时间的机器都可以处理.

 

在这一点上, 你必须做出决定到底是local time还是TUC time. 提示: 如果你在一个盒子上同时运行WindowsLinux, 我建议你使用local time. 如果你很少使用Windows或者根本没有Windows, 将时间设为UTC格式将是一个主意. 当你决定后, 编辑/etc/sysconfig/clock, 使用UTC=0来设置local time, UTC=1设置为UTC(GMT)时间.

 

确定你的时区

 

知道你所在的时区对本文下面的内容是非常重要的. 但是由于受到daylight saving影响, 不能完全确定你距离Greenwich的时区数. LFS提供了一个简单的程序, 在这个程序中, 只需回答几个问题(通常是23), 就可以确定你的时区.

 

运行:

       # tzselect

 

当程序结束时, 最后打印出的一行就是你的时区. 这里打印出 ”America/Indianapolis”(没有引号). 记住这个值. 将它写到一个文本文件中. 在本文后面的一个简单说明中会用到$TIMEZONE来使用这个变量.

 

使用$TIMEZONE设置


  
  
   
    
  
  

现在你知道了你所在的时区, 我们可以将知识用于实践. 首先, 我们以创建/etc/localtime开始. 这个文件不管你选择UTClocal time都是需要的. 在写作本文时, LFS使用一个真正的文件, 所以我也使用这个方法, 虽然一个符号链接也同样可以工作.


  
  
   
    
  
  

# cp --remove-destination /usr/share/zoneinfo/$TIMEZONE /etc/localtime


  
  
   
    
  
  

然后, 我们需要修改setclock启动脚本, 先简要解释一下系统时间和硬件时间.

 

硬件时钟在你的BIOS, 即时在关机时也可以保持时间. 然而, 硬件时钟一点也不精确. 系统时钟在运行时由kernel来维护并且是非常精确的. 但是系统时钟如何知道当前的时间? 在启动时, 标准的LFS启动脚本根据硬件时钟来设置系统时钟. 然后, 硬件时钟就被忽略了. 问题是在这种情况下, 当机器运行了许多天之后(取决于你的BIOS), 系统时钟与硬件时钟也许会有很大差异. 当你重启机器时, 不精确的硬件时钟又将用于设置系统时钟. 这样, 允许kernel在关机前来更新BIOS时间对我们来说是需要的, 这样系统在下次启动时, BIOS更可能有一个精确的时间.读写硬件时钟由一个叫hwclock(8)的程序来实现. 这个程序时LSF的一部分, 所以你不需要下载. 我们将修改一些启动脚本以实现在启动和关机的时候运行这个程序.


  
  
   
    
  
  

注意: Keith Harwood通知我他的DS10 Alpha box的硬件时钟比他的系统时钟还要精确. 系统时钟在一天会误差几分钟. 这很有可能时kernel的一些缺陷, 但是你应该将你的系统时间与一个精确的时间做比较, 在至少运行了一天之后再比较一下. 我怀疑任何x86的用户会发现硬件时钟比系统时钟更精确.

 

在书中, /etc/rc.d/init.d中创建了一个名为setclock的脚本. 这个脚本只完成了一半的工作, 它仅仅从硬件时钟设置系统时间. 我们将修改这个脚本, 并传见一下额外的符号链接来使这个脚本在关机/重启使将系统时间保存到硬件时钟.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值