计算机有两个时钟,一个是始终运行的、由电池供电的( 硬件的、BIOS或CMOS
)时钟,另一个是由运行在计算机上的操作系统维护的( 系统
)时钟。硬件时钟通常只在操作系统启动时用来设置系统时钟,然后直到重启或关闭系统,由系统时钟来记录时间。
设置时区:
Linux 下的时区是通过建立从/etc/localtime[1]
到/usr/share/zoneinfo [2]
目录下与您所在时区相符的文件的符号链结实现的。例如,由于我在北京,/etc/localtime就是到/usr/share/zoneinfo/Asia/Beijing的符号链结。要建立这个链结,运行:
ln -sf /usr/share/zoneinfo/your/zone
/etc/localtime替换your/zone 为形如Asia/Beijing
的文件。看看/usr/share/zoneinfo目录都有什么时区。
[1] 这里假设/usr/share/zoneinfo 是到/etc/localtime
的链结的前提是Redhat Linux
[2]
在旧版本的系统里,您会发现使用/usr/lib/zoneinfo而不是/usr/share/zoneinfo。
设置UTC
或本地时间:
当Linux 启动时,一个启动脚本运行/sbin/hwclock
程序复制当前硬件时钟时间到系统时钟。hwclock 假定硬件时钟设置为本地时间,除非它使用了--utc 参数。在RedHat
Linux下您不是编辑启动脚本,而是编辑/etc/sysconfig/clock 文件,相应的改变UTC
一行为UTC=true或UTC=false。
设置系统时钟:
在Linux 下设置系统时钟使用date命令。例如,设置当前时间和日期为July
31,11:16pm,运行date 07312316 ( 注意这里的时间是24小时制) ;如果您想设置年份为1998,应该运行date 073123161998
;要是也想设置秒,运行date 07312316.30或date 073123161998.30。要查看Linux
当前本地时间,使用date,不带参数。
设置硬件时钟:
要设置硬件时钟,我喜欢的方式是首先设置系统时钟,然后设置硬件时钟为当前系统时钟时间,使用命令/sbin/hwclock
--systohc (或 /sbin/hwclock --systohc --utc ) ,如果您使用UTC 保存硬件时钟)
。要查看当前硬件时钟的设置,不带参数运行hwclock 。如果硬件时钟是UTC 保存,而您想看相应的本地时间,运行/sbin/hwclock --utc
。
注解:
Linux kernel总是按照从UTC 时间1970年1 月1
日午夜开始的秒数来储存和计算时间,无论您的硬件时钟是否用UTC
保存。转换到本地时间的工作是运行时完成的。这样做的一个妙处是,如果某人从不同的时区使用您的计算机,他可以设置时区环境变量,所有的日期和时间可以按他的时区正确显示。