您的位置:首页 > 运维架构 > Linux

Linux查看设置系统时区

2017-04-01 13:55 274 查看
关于时区的概念,其实初中地理课已经涉及,很多人都多少了解一些,可能只是细节搞不太清楚。为什么会将地球分为不同时区呢?因为地球总是自西向东自转,东边总比西边先看到太阳,东边的时间也总比西边的早。东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算。整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC,UniversalTimeCoordinated)。UTC与格林尼治平均时(GMT,
GreenwichMeanTime)一样,都与英国伦敦的本地时相同。

关于时间的几个标准,如下所示,具体可以Google、Baidu搜索一下。

CST:中国标准时间(ChinaStandardTime),这个解释可能是针对RedHatLinux。

UTC:协调世界时,又称世界标准时间,简称UTC,从英文国际时间/法文协调时间”UniversalTime/TempsCordonné”而来。中国大陆、香港、澳门、台湾、蒙古国、新加坡、马来西亚、菲律宾、澳洲西部的时间与UTC的时差均为+8,也就是UTC+8。

GMT:格林尼治标准时间(旧译格林威治平均时间或格林威治标准时间;英语:GreenwichMeanTime,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。

关于时区分布图,大家可以参考http://www.timedate.cn/time/timezone.htm,我们国家跨越了东五区、东六区、东七区、东八区、东九区五个时区,一般都统一采用东八区计时时间。





Linux系统如何查看设置所在的时区呢?

1:使用date命令查看时区

[root@db-server~]#date-R


Sun,11Jan201507:10:28-0800


[root@db-server~]#



如上RFC2822format所示,上面命令输出了-0800表示西八区,是美国旧金山所在的时区,下面表示我们国家的东八区(+0800)

[root@lnx01~]#date-R


Sun,11Jan201523:06:02+0800



2:查看clock系统配置文件

[root@db-server~]#more/etc/sysconfig/clock

ZONE="America/Los_Angeles"

UTC=true

ARC=false


如上所示,表示该系统设置的时区为“America/Los_Angeles”,也就是西八区。

Linux系统如何设置系统所在的时区呢?

方法1:使用tzselect设置时区

例子,将系统时区设置为东八区(北京时间)

[root@db-server~]#tzselect

Pleaseidentifyalocationsothattimezonerulescanbesetcorrectly.

Pleaseselectacontinentorocean.

1)Africa

2)Americas

3)Antarctica

4)ArcticOcean

5)Asia

6)AtlanticOcean

7)Australia

8)Europe

9)IndianOcean

10)PacificOcean

11)none-IwanttospecifythetimezoneusingthePosixTZformat.

#?5

Pleaseselectacountry.

1)Afghanistan18)Israel35)Palestine

2)Armenia19)Japan36)Philippines

3)Azerbaijan20)Jordan37)Qatar

4)Bahrain21)Kazakhstan38)Russia

5)Bangladesh22)Korea(North)39)SaudiArabia

6)Bhutan23)Korea(South)40)Singapore

7)Brunei24)Kuwait41)SriLanka

8)Cambodia25)Kyrgyzstan42)Syria

9)China26)Laos43)Taiwan

10)Cyprus27)Lebanon44)Tajikistan

11)EastTimor28)Macau45)Thailand

12)Georgia29)Malaysia46)Turkmenistan

13)HongKong30)Mongolia47)UnitedArabEmirates

14)India31)Myanmar(Burma)48)Uzbekistan

15)Indonesia32)Nepal49)Vietnam

16)Iran33)Oman50)Yemen

17)Iraq34)Pakistan

#?9

Pleaseselectoneofthefollowingtimezoneregions.

1)eastChina-Beijing,Guangdong,Shanghai,etc.

2)Heilongjiang(exceptMohe),Jilin

3)centralChina-Sichuan,Yunnan,Guangxi,Shaanxi,Guizhou,etc.

4)mostofTibet&Xinjiang

5)westTibet&Xinjiang

#?1


Thefollowinginformationhasbeengiven:


China

eastChina-Beijing,Guangdong,Shanghai,etc.


ThereforeTZ='Asia/Shanghai'willbeused.

Localtimeisnow:SunJan1123:31:51CST2015.

UniversalTimeisnow:SunJan1115:31:51UTC2015.

IstheaboveinformationOK?

1)Yes

2)No

#?yes

Pleaseenter1forYes,or2forNo.

#?1


Youcanmakethischangepermanentforyourselfbyappendingtheline

TZ='Asia/Shanghai';exportTZ

tothefile'.profile'inyourhomedirectory;thenlogoutandloginagain.


HereisthatTZvalueagain,thistimeonstandardoutputsothatyou

canusethe/usr/bin/tzselectcommandinshellscripts:

Asia/Shanghai


注意:tzselect命令只告诉你选择的时区的写法,并不会生效。所以现在它还不是东8区北京时间。你可以在.profile、.bash_profile或者/etc/profile中设置正确的TZ环境变量并导出。例如在.bash_profile里面设置TZ='Asia/Shanghai';exportTZ并使其生效。

[root@db-server~]#source.bash_profile


[root@db-server~]#date


SunJan1123:37:40CST2015



方法2:复制相应的时区文件,替换系统时区文件;或者创建链接文件



在/usr/share/zoneinfo/下面有很多时区文件,如下所示,可以复制这些时区文件覆盖/etc/localtime文件,或修改符号链接/etc/locatime对应的文件





[root@db-server~]#date-R

Mon,12Jan201510:42:26+0800

[root@db-server~]#cp/usr/share/zoneinfo/America/Los_Angeles/etc/localtime

cp:overwrite`/etc/localtime'?y

[root@db-server~]#date-R

Sun,11Jan201518:42:49-0800

[root@db-server~]#






注意如果有时候,执行了上面命令后,使用date-R发现时区设置没有生效,有可能是因为你在profile或.bash_profile里面设置了TZ,如下案例所示:

[root@db-server~]#date-R

Sun,11Jan201518:42:49-0800

[root@db-server~]#vi.bash_profile

#.bash_profile


#Getthealiasesandfunctions

if[-f~/.bashrc];then

.~/.bashrc

fi


#Userspecificenvironmentandstartupprograms


PATH=$PATH:$HOME/bin


TZ='Asia/Shanghai';exportTZ

exportPATH

unsetUSERNAME

~

~

".bash_profile"14L,221Cwritten

[root@db-server~]#source.bash_profile

[root@db-server~]#date-R

Mon,12Jan201510:44:35+0800


方式2:修改链接/etc/locatime的时区文件

[root@db-server~]#ln/usr/share/zoneinfo/Asia/Shanghai/etc/localtime

ln:creatinghardlink`/etc/localtime'to`/usr/share/zoneinfo/Asia/Shanghai':Fileexists

[root@db-server~]#rm/etc/localtime

rm:removeregularfile`/etc/localtime'?y

[root@db-server~]#ln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime

[root@db-server~]#date-R

Mon,12Jan201510:56:10+0800

[root@db-server~]#

方法3:使用timeconfig设置时区



timeconfig命令仅限于RedHatLinux和CentOS。

参  数:

--arc 使用Alpha硬件结构的格式存储系统时间。

--back 在互动式界面里,显示Back钮而非Cancel钮。

--test 仅作测试,并不真的改变系统的时区。

--utc 把硬件时钟上的时间视为CUT,有时也称为UTC或UCT。





感觉这个timeconfig命令在命令界面使用起来并不好用。给人的感觉非常别扭。用户体验非常糟糕。如下所示,看起来也很糟糕。

[root@db-server~]#timeconfig--utc"Asia/Shanghai"











方法4:使用dpkg-reconfiguretzdata设置时区

这个仅仅适用于Debian,手头没有环境,没有实验过,在此不作过多阐述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: