Linux及Unix调整系统时间和时区的方法

一、Linux调整时区
1) 找到相应的时区文件 ,如调整到亚洲/上海时区:

ln -s   /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
用这个文件替换当前的/etc/localtime文件。
2) 修改/etc/sysconfig/clock文件,修改为:
ZONE=”Asia/Shanghai”
UTC=false
ARC=false

3)通过tzselect调整

# tzselect

Please identify a location so that time zone rules can be set correctly.Please select a continent or ocean
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia  Europe
9) Indian Ocean
10) Pacific Ocean
11) none – I want to specify the time zone using the Posix TZ format.
输入5,亚洲

4) Bahrain
21) Kazakhstan
38) Russia
5) Bangladesh
22) Korea (North)
39) Saudi Arabia
6) Bhutan
23) Korea (South)
40) Singapore
7) Brunei
24) Kuwait
41) Sri Lanka  Cambodia
25) Kyrgyzstan
42) Syria
9) China
输入9,中国

Please select one of the following time zone regions
1) east China – Beijing, Guangdong, Shanghai, etc.
2) Heilongjiang
3) central China – Gansu, Guizhou, Sichuan, Yunnan, etc.
4) Tibet & most of Xinjiang Uyghur
5) southwest Xinjiang Uyghur
输入1,北京时间

The following information has been given:
China east China – Beijing, Guangdong, Shanghai, etc
Therefore TZ=”Asia/Shanghai” will be used.Local time is now: Fri Jul 7 10:32:18 CST 2006.Universal Time is now: Fri Jul 7 02:32:18 UTC 2006.Is the above information OK?1) Yes2) No
输入1,确认


二、Linux时间的更改
      Linux时钟分为系统时钟 (System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。
      Linux中的所有命令(包括函数)都是采用的系统时钟设置。在Linux中,用于时钟查看和设置的命令主要有date、hwclock和 clock。其中,clock和hwclock用法相近,只用一个就行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。
1、date
查看系统时间
# date
设置系统时间
# date –set “07/07/06 10:19″ (月/日/年时:分:秒)
2、hwclock/clock
查看硬件时间
# hwclock –show
或者# clock –show
设置硬件时间
# hwclock –set –date=”07/07/06 10:19″ (月/日/年 时:分:秒)
或者# clock –set –date=”07/07/06 10:19″ (月/日/年 时:分:秒)
3、硬件时间和系统时间的同步
按照前面的说法,重新启动系统,硬件时间会读取系统时间,实现同步,但是在不重新启动的时候,需要用hwclock或clock命令实现同步。
硬件时钟与系统时钟同步:# hwclock –hctosys(hc代表硬件时间,sys代表系统时间)或者# clock –hctosys
系统时钟和硬件时钟同步:# hwclock –systohc或者# clock –systohc
三、UNIX中的时区TZ设置
修改时区的方法:
Solaris:
在solaris中,修改时区需要修改/etc/TIMEZONE文件,其中的TZ=PRC就表示中国时区,我们可以将其替换为TZ=US/Pacific,再重启机器,就将时区修改为美国太平洋时区了。
这里需要注意三点:
1,在X86的机器上,需要再执行如下命令,更新/etc/rtc_config文件:
# rtc -z zone-name(这里的zone-name就是/etc/TIMEZONE中TZ的值)
# rtc -c
2,到底有多少中时区可以选择呢?我们可以进入/usr/share/lib/zoneinfo目录,其中有很多目录,包括US,也有很多文件,比如PRC;这表示US下还有很多时区,而PRC就是统一的时区。正因为如此,我们才看到TZ=PRC和TZ=US/Pacific这两种不同的形式。
3,需要重启系统使之生效。
AIX:
1,查看当前时区(其他操作系统是date命令即可)
cat /etc/environment (查找TZ所在行)
2,为了妥善起见,建议使用smit修改时区
smit chtz
3,所有的时区信息在/usr/share/lib/zoneinfo目录
HPUX:

修改配置文件,/etc/TIMEZONE为

#vi /etc/TIMEZONETZ=EAT-8export TZ

修改配置文件/etc/default/tz 为

# vi /etc/default/tz EAT-8

修改完成后需要重启系统。

#echo $TZ

EAT-8

(若APP显示的是UTC时间,则需要减去8个小时来转换为本地北京时间。)

四、常见的系统时区定义:

Time Zones Defined on the System:
Name             Time           Zone           CUT Offset
CUT0GDT Coordinated Universal Time CUT
GMT0BST United Kingdom CUT
AZOREST1AZOREDT Azores, Cape Verde CUT -1
FALKST2FALKDT Falkland Islands CUT -2
GRNLNDST3GRNLNDDT Greenland, East Brazil CUT -3
AST4ADT Central Brazil CUT -4

中文:
系统时区定义
定义           时区          GMT时间定义
CUT0GDT 格林威治时间 CUT
GMT0BST 伦敦 都柏林 里斯本 爱丁堡 CUT
AZOREST1AZOREDT 亚速尔群岛 佛得角群岛 CUT -1
FALKST2FALKDT 福克兰群岛(西大西洋) CUT -2
GRNLNDST3GRNLNDDT 格陵兰 巴西利亚 纽芬兰 CUT -3
AST4ADT 大西洋时间(加拿大)南美洲西部 圣地亚哥 CUT -4
EST5EDT 东部时间(美加) 印第安纳(东部) CUT -5
CST6CDT 中部时间(美加) 墨西哥城 CUT -6
MST7MDT 山地时间(美加) 亚利桑那 CUT -7
PST8PDT 太平洋时间(美加) 蒂华纳 CUT -8
AST9ADT 阿拉斯加 CUT -9
HST10HDT 夏威夷 CUT -10
BST11BDT 中途岛 萨摩亚群岛 CUT -11
NZST-12NZDT 纽西兰 新西兰(太平洋南部岛国) CUT +12
PAKST-5PAKDT 伊斯兰堡 卡拉奇 CUT +5
WST-4WDT 高尔基 中亚 阿曼 CUT +4
MEST-3MEDT 土耳其 CUT +3
SAUST-3SAUDT 沙乌地阿拉伯 CUT +3
WET-2WET 芬兰 CUT +2
USAST-2USADT 南非 东欧 CUT +2
NFT-1DFT 挪威(北欧国家)罗马 CUT +1