查看和修改Linux的时间和时区

1、查看当前时间、时区、日历

# date
Tue Dec 25 15:36:09 CST 2013
# date -R
Tue, 25 Dec 2013 15:36:13 +0800
# cal
    December 2013   
Su Mo Tu We Th Fr Sa
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

 

2、修改服务器的时间

1)修改日期的格式,时分秒默认为 00:00:00

# date -s 2013/12/25              // ok
Wed Dec 25 00:00:00 CST 2013
# date -s 2013-12-25              // ok
Wed Dec 25 00:00:00 CST 2013
# date -s 12/25/2013              // ok
Wed Dec 25 00:00:00 CST 2013
# date -s 25/12/2013              // error
date: invalid date ‘25/12/2013’

 

2)修改时间的格式

# date -s 15:50:30
Tue Dec 25 15:50:30 CST 2013
# date
Tue Dec 25 15:50:31 CST 2013

 

3)写入到主板CMOS

# clock -w
# hwclock -w
# 

 

3、修改服务器的时区

1)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
 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
#? 9
Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time
#? 1

The following information has been given:

        China
        Beijing Time

Therefore TZ='Asia/Shanghai' will be used.
Local time is now:      Tue Dec 25 16:09:30 CST 2013.
Universal Time is now:  Tue Dec 25 08:09:30 UTC 2013.
Is the above information OK?
1) Yes
2) No
#? 1

You can make this change permanent for yourself by appending the line
        TZ='Asia/Shanghai'; 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 /bin/tzselect command in shell scripts:
Asia/Shanghai

 

2)复制时区文件软链接到 /etc/localtime

ln -sf /usr/share/zoneinfo/Asia/Chongqing /etc/localtime          // 软链到东八区 - 重庆

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime          // 软链到东八区 - 上海

 

 

Linux 修改时间的命令

date –s '2013-12-25 10:10:10'
clock –w         // 将日期写入CMOS,避免重启后失效
hwclock –w         // 将日期写入CMOS,避免重启后失效

 

Linux时间修改3个命令

date:修改系统当前的时间
clock:修改CMOS时间(查看CMOS时间:clock -r)
hwclock:修改系统硬件时间

# date
Tue Dec 25 15:32:22 CST 2013
# clock -r
Tue 25 Dec 2013 03:32:27 PM CST  -1.061780 seconds
# clock
Tue 25 Dec 2013 03:32:31 PM CST  -1.071987 seconds
# hwclock
Tue 25 Dec 2013 03:32:35 PM CST  -1.055773 seconds

 

hwclock 硬件时钟的用法

hwclock --show      // 查看硬件时钟
hwclock --set --date="1/23/01 22:16:59"      // 设置硬件时钟

# hwclock
Tue 25 Dec 2013 03:53:28 PM CST  -1.059641 seconds
# hwclock --set --date='2013-12-25 03:53:38'
# 

 

硬件时间从根本上讲是CMOS时钟;而系统时间是由内核维护的,它是从1969年末(即传说中的标志Unix时代开端的那个拂晓)开始算起的累积秒数。

在DOS或Mac系统中,起作用的是硬件时钟

遗憾的是,你可能已经发现了,绝大多数电脑时钟都是很不准确的。它们从根本上讲是由小型电池供电的警报器时钟,这种锂电池一般可持续供电三年左右,那时候你系统各大块差不多都已经过时了。而在Linux系统中,起作用的是系统时钟。在启动时,它靠读取硬件时钟获得计时起点,而不是靠记忆计时。

你可以通过BIOS修改系统硬件时钟,或者如果你不想重起机器,那就用hwclock命令

硬件时钟通常被设置成全球标准时间(UTC),而将时区信息保存在 /usr/share/zoneinfo/ 或 /usr/share/lib/timezone 或在某些系统中可能是/usr/local/timezone 的目录下某个适当的文件中,然后用一个符号链接文件/etc/localtime指向它。

例如:

]# ll /etc/localtime      
lrwxrwxrwx. 1 root root 34 May  2  2013 /etc/localtime -> /usr/share/zoneinfo/Asia/Chongqing

 

CentOS下的操作

ln -sf /usr/share/zoneinfo/Asia/Chongqing /etc/localtime          // 修正时区
date –s '2011-11-23 22:34:10'           // 设置时间
clock –w        // 将时间写入CMOS

 

AWS EC2上修改RedHat系统时区及ntp对时

有人说EC2上不需要进行对时,基于Xen的虚拟机的系统时间会跟宿主的时间保持一致,并且不需要运行ntpd服务,不过从运维的角度我们还是决定根据需要自己配置时区及对时。假设您AWS上的EC2实例是创建在新加坡,并且是面向东南亚用户,可以使用新加坡当地时间。

具体步骤如下:

1. 修改时区

sudo  cp   /usr/share/zoneinfo/Asia/Chongqing   /etc/localtime            // 默认为UTC时间

2. 配置ntp服务

vim /etc/ntp.conf

Amazon EC2添加ntp服务器

server 0.amazon.pool.ntp.org iburst
server 1.amazon.pool.ntp.org iburst
server 2.amazon.pool.ntp.org iburst
server 3.amazon.pool.ntp.org iburst

3. 重启ntpd服务及设置自动启动

/etc/init.d/ntpd start
chkconfig ntpd on

4. 查看ntp状态

ntpstat
ntpq -p

 

 

参考推荐

AWS EC2修改系统时区

Linux 命令快捷键

Linux 常用命令大全

CentOS 修改date系统时间

Linux 实用好评的命令工具

Linux cut 命令

Linux lsof 命令详解

Linux vmstat 命令详解

Linux rc.local 命令不执行

Linux expect 命令无需输入密码登陆

Linux date日期格式及加减运算