Ubuntu16.04操作系统环境下修改时区
本文主要介绍如何在Ubuntu16.04操作系统环境下修改时区。
1. 时区相关操作
如果你的Linux系统时区配置不正确,必须要手动调整到正确的当地时区。NTP对时间的同步处理只计算当地时间与UTC时间的偏移量,因此配置一个NTP对时间进行同步并不能解决时区不正确的问题。所以大家在用了国外云计算服务商如Microsoft Azure 或者其他vps、虚拟机时,需要注意是否与中国大陆的时区一致。
1) 查看Linux当前时区
你可以使用如下命令非常容易地就查看到Linux系统的当前时区:
# date
Tue Feb 6 20:37:28 CST 2018
# timedatectl
Local time: Sun 2018-12-16 02:58:35 PST
Universal time: Sun 2018-12-16 10:58:35 UTC
RTC time: Sun 2018-12-16 10:58:35
Time zone: America/Los_Angeles (PST, -0800)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
# ls -al /etc/localtime
lrwxrwxrwx. 1 root root 33 Feb 6 20:38 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
上面CST
可视为美国、澳大利亚、古巴或中国的标准时间。
CST
可以为如下4个不同的时区的缩写:
-
美国中部时间:Central Standard Time (USA) UT-6:00
-
澳大利亚中部时间:Central Standard Time (Australia) UT+9:30
-
中国标准时间:China Standard Time UT+8:00
-
古巴标准时间:Cuba Standard Time UT-4:00
2) 获取时区TZ值
要更改Linux系统时区首先得获知你所在当地时区的TZ值,使用tzselect
命令即可查看并选择已安装的时区文件:
[root@localhost test-src]# 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
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#? 5
Please select a country.
1) Afghanistan 18) Israel 35) Palestine
2) Armenia 19) Japan 36) Philippines
3) Azerbaijan 20) Jordan 37) Qatar
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
8) Cambodia 25) Kyrgyzstan 42) Syria
9) China 26) Laos 43) Taiwan
10) Cyprus 27) Lebanon 44) Tajikistan
11) East Timor 28) Macau 45) Thailand
12) Georgia 29) Malaysia 46) Turkmenistan
13) Hong Kong 30) Mongolia 47) United Arab Emirates
14) India 31) Myanmar (Burma) 48) Uzbekistan
15) Indonesia 32) Nepal 49) Vietnam
16) Iran 33) Oman 50) Yemen
17) Iraq 34) Pakistan
#? 13
The following information has been given:
Hong Kong
Therefore TZ='Asia/Hong_Kong' will be used.
Local time is now: Tue Feb 6 20:51:41 HKT 2018.
Universal Time is now: Tue Feb 6 12:51:41 UTC 2018.
Is the above information OK?
1) Yes
2) No
#? 1
You can make this change permanent for yourself by appending the line
TZ='Asia/Hong_Kong'; export TZ
to the file '.profile' in your home directory; then log out and log in again.
Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Hong_Kong
通过上面我们知道香港时区值的写法为Asia/Hong_Kong
此外,我们也可以通过如下方式来获得各时区的写法:
# ls /usr/share/zoneinfo/ Africa Asia Canada Cuba EST GB GMT-0 HST iso3166.tab Kwajalein MST NZ-CHAT posix right Turkey UTC Zulu America Atlantic CET EET EST5EDT GB-Eire GMT+0 Iceland Israel Libya MST7MDT Pacific posixrules ROC UCT WET Antarctica Australia Chile Egypt Etc GMT Greenwich Indian Jamaica MET Navajo Poland PRC ROK Universal W-SU Arctic Brazil CST6CDT Eire Europe GMT0 Hongkong Iran Japan Mexico NZ Portugal PST8PDT Singapore US zone.tab # ls /usr/share/zoneinfo/Asia/ Aden Bahrain Choibalsan Dushanbe Jakarta Khandyga Makassar Pontianak Seoul Thimbu Vientiane Almaty Baku Chongqing Gaza Jayapura Kolkata Manila Pyongyang Shanghai Thimphu Vladivostok Amman Bangkok Chungking Harbin Jerusalem Krasnoyarsk Muscat Qatar Singapore Tokyo Yakutsk Anadyr Barnaul Colombo Hebron Kabul Kuala_Lumpur Nicosia Qyzylorda Srednekolymsk Tomsk Yangon Aqtau Beirut Dacca Ho_Chi_Minh Kamchatka Kuching Novokuznetsk Rangoon Taipei Ujung_Pandang Yekaterinburg Aqtobe Bishkek Damascus Hong_Kong Karachi Kuwait Novosibirsk Riyadh Tashkent Ulaanbaatar Yerevan Ashgabat Brunei Dhaka Hovd Kashgar Macao Omsk Saigon Tbilisi Ulan_Bator Ashkhabad Calcutta Dili Irkutsk Kathmandu Macau Oral Sakhalin Tehran Urumqi Baghdad Chita Dubai Istanbul Katmandu Magadan Phnom_Penh Samarkand Tel_Aviv Ust-Nera
3) 更改每个用户的时区
Linux是一个多用户系统,每个用户都可以配置自己所需的时区,你可以为自己新增一个TZ环境变量:
export TZ='Asia/Shanghai'
执行完成后,需要重新登录系统或刷新~/.bashrc生效。
# source ~/.bashrc
4) 更改系统时区
要更改Linux系统整个系统范围的时区可以使用如下命令:
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
注意: /usr/share/zoneinfo/Asia/Shanghai中的具体时区请用自己获取的TZ值进行替换。
5) 使用Systemd更改Linux系统时区
如果你使用的Linux系统使用Systemd,还可以使用timedatectl
命令来更改Linux系统范围的时区。在Systemd下有一个名为systemd-timedated的系统服务负责调整系统时钟和时区,我们可以使用timedatectl命令对此系统服务进行配置:
# sudo timedatectl set-timezone 'Asia/Shanghai'
[参看]: