Linux基础设置--Timezone - 我的天地
Linux基础设置--Timezone
前两天做完LFS和BLFS之后发现系统的时间设置 出了点问题,顺便借这个机会了解了一下linux中有关timezone的基础设置,基本的内 容来自LFS的timezone文档。
首先,世界一共分为24个timezone,也就 是时区,本地的时区决定于距离格林威治的时区数,格林威治就是时区0了,例如USA是 -5区,也就是USA的本地时间比格林威治的时间早5个小时。
Local时间 和UTC时间:
UTC(Universal Time Coordinated),也就是格林威治的时 间,和GMT(Greenwich Mean Time)是完全一样的。
Local时间,也就是 本地时间,就是你手表的时间或者你身边挂在墙上时钟的时间。
传统 上遵循POSIX的操作系统都用UTC作为系统时间的格式,不过在linux下,你可以设置是 用Local时间还是UTC,编辑/etc/sysconfig/clock,UTC=0代表选择Local时间,而 UTC=1代表选择UTC(GMT)时间。
tzselect这个程序可以帮助你选择你锁 在的时区,一般它会问你几个问题,通过选择你所在的洲、国家、地区,最后给出你所 在位置的时区,一般这个程序打印的最后一行就是你的时区,比如我的是 “Asia/Shanghai”,这个值很关键。
不管你是用UTC还是Local,都需 要/etc/localtime这个文件,来应用你的时区,这个文件可以是直接创建在下面的文件 ,也可以是链接,LFS通过下面的命令直接创建了这个文件(以Asia/Shanghai为 例):
# cp --remove-destination /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
这里还有硬件时 钟和系统时钟两个概念,硬件时钟就是在BIOS中,依靠电池,即使关机断电也可以运作 的时钟,一般情况下硬件时钟的准确性并不是很高,而系统时钟就是系统启动后内核接 管计时的时钟,系统时钟相对要准确得多,在计算机启动之后,系统读取硬件时钟并根 据它设置系统时钟,关机的时候再根据系统时钟更新硬件时钟,这样可以相对确保计时 的准确性,而且我们在系统下所做的时间更改也可以被更新到硬件时钟去。在linux下 ,这些工作是通过hwclock这个程序来实现的。
还有要说明的就是TZ这 个环境变量,不仅 hwclock依靠这个变量,很多程序也依赖这个变量,这个变量的值就 是上面tzselect产生的那个值,例如Asia/Shanghai,一般在 /etc/profile中把这个变 量设置好(以Asia/Shanghai为例):
export TZ=Asia/Shangha
也可以临时更改TZ来完成一些简单的应用,比如 date这个命令是得到现在的日期与时间,所以如果你想知道日本的时间,可以用下面的 命令;
# TZ=Japan date