我们知道,计算机系统有两个时钟,一个是硬件时钟,一个是系统时钟,硬件时钟的工作原理就是电脑在开机运行的时候会给主板上的纽扣电池充电,关机后这块电池还为存放系统参数的CMOS、RAM供电,以保存其中的系统参数。系统参数包括硬盘类型、软盘驱动器、显示卡、键盘、鼠标、显示器等,反映了计算机设备的情况,还包括日期、时间等等,这有点扯远了。
一、查看当前时区:
[root@lwy ~]# cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"
UTC=false
ARC=false
其中,ZONE="Asia/Shanghai" 中的内容是/usr/share/zoneinfo/下的文件:
[root@lwy ~]# ls /usr/share/zoneinfo/
Africa Chile Factory Iceland Mexico posix Universal
America CST6CDT GB Indian Mideast posixrules US
Antarctica Cuba GB-Eire Iran MST PRC UTC
Arctic EET GMT iso3166.tab MST7MDT PST8PDT WET
Asia Egypt GMT0 Israel Navajo right W-SU
Atlantic Eire GMT-0 Jamaica NZ ROC zone.tab
Australia EST GMT+0 Japan NZ-CHAT ROK Zulu
Brazil EST5EDT Greenwich Kwajalein Pacific Singapore
Canada Etc Hongkong Libya Poland Turkey
CET Europe HST MET Portugal UCT
UTC=false 硬件时钟是否为UTC或者说GMT时钟(UTC和GMT的故事见另一日记--《UTC时间和GMT时间》)。
ARC=false 如果是Alpha硬件体系的机器,则设置为true。
二、Linux加载时区和时间:
Linux 启动时,其中的一个脚本(/etc/rc.d/rc.sysinit)会运行 /sbin/hwclock 程序,把当前的硬件时钟复制为系统时间。脚本文件会读取时区配置文件 /etc/sysconfig/clock ,因此我们不需要修改脚本,直接修改这个配置文件就可以了,根据需要把其中的 UTC 行,设置为 true 或者 false。
三、修改系统时区:
1、tzselect 可以修改/etc/sysconfig/clock这个配置文件,根据命令的提示进行修改就好了。
但是在实际工作中,发现这种方式是不能够使得服务器上的时间设置马上生效的,而且使用ntpdate去同步时间服务器也不能够更改时间。即使你使用了 date命令手工设置了时间的话,如果使用ntpdate去进行时间同步的话,时间又会被改动到原来的错误时区的时间。而生产的机器往往是非常重要的,不 能够进行重启等操作。
2、如果要修改时区并且马上生效,可以复制相应的时区文件,替换系统默认时区:
# cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime
对于中国服务器则执行:
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
其实加个软连接也可以,但是通常都是复制。软连接方法如下:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
然后,将当前时间写入BIOS永久生效(避免重启后失效)
# hwclock
四、修改系统时间
date -s
比如将系统时间设定成1996年6月10日的命令如下。
#date -s 06/10/96
将系统时间设定成下午1点12分0秒的命令如下。
#date -s 13:12:00
#clock -w
这个命令强制把系统时间写入CMOS