Linux系统时间和硬件时间设置

在linux系统中有两个时间,硬件时钟和系统时间,硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。所有Linux相关指令与函数都是读取系统时钟的设定。因为存在两种不同的时钟,那么它们之间就会存在差异。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。

用date命令对系统时间进行设置后,并不会去修改硬件时钟,所以系统重启后,系统时间还算会去读取硬件时间,这就是为何date设置失效到原因。

因此,需要在设置系统时间后,将系统时间同步到硬件时钟。

clock/hwclock:

显示与设定硬件时钟(query and set the hardware clock (RTC)),两个命令相同。RTC=Real Time Clock,也就是硬件时钟。

命令参数:

-r, --show        读取并打印硬件时钟(read hardware clock and print result)
-s, --hctosys    将硬件时钟同步到系统时钟(set the system time from the hardware clock)
-w, --systohc    将系统时钟同步到硬件时钟(set the hardware clock to the current system time)

命令示例:

date 显示是当前系统时间

修改系统时间

Linux系统时间日期手动修改(1)

查看当前时间         # date

修改时间命令         # date –s 12:12:00

修改日期命令         # date –s 01/12/2008

[root@node1 ~]# hwclock -r
2016年04月24日 星期日 13时51分01秒  -0.880312 seconds
[root@node1 ~]# date
2016年 04月 22日 星期五 21:21:29 CST

(2)同步系统时间到硬件时钟

 

root@node2 ~]# date                                      #显示当前的系统时间
2016年 04月 24日 星期日 23:15:59 CST      
[root@node2 ~]# hwclock -r                           #显示当前的硬件时间 
2016年04月24日 星期日 14时05分47秒  -0.845293 seconds
[root@node2 ~]# hwclock -w                         #将系统时间同步到硬件时钟(系统时间作为硬件时间)
[root@node2 ~]# hwclock -r                           #再次显示硬件时间
2016年04月24日 星期日 23时16分42秒  -0.956500 seconds
[root@node2 ~]# date                                     #再次显示系统时间
2016年 04月 24日 星期日 23:16:48 CST

 

(3)将硬件时间作为系统时间

[root@node1 ~]# hwclock  -r                                                          #显示硬件时间
2016年04月24日 星期日 14时14分56秒  -0.690487 seconds     
[root@node1 ~]# date                                                                    #显示系统时间
2016年 04月 24日 星期日 14:14:59 CST                                     #将硬件时间作为系统时间
[root@node1 ~]# hwclock -s
[root@node1 ~]# hwclock -r                                                           #再次显示硬件时间
da2016年04月24日 星期日 14时15分21秒  -0.785729 seconds
[root@node1 ~]# date                                     #再次显示系统时间
2016年 04月 24日 星期日 14:15:22 CST

(3)将系统时间同步至网络时间

同步命令

# ntpdate ntp服务器域名或IP

例如:# ntpdate 1.cn.pool.ntp.org

http://www.pool.ntp.org是NTP的官方网站,在这上面我们可以找到离我们国家的NTP Server cn.pool.ntp.org.它有3个服务器地址:

服务器一:        1.cn.pool.ntp.org
服务器二:        2.asia.pool.ntp.org
服务器三:        3.asia.pool.ntp.org

(直接用域名有时有问题,可以先Ping出他们的IP,然后用IP地址同步)

自动运行同步时间脚本设定

# crontab –e

添加脚本例子如下:

*/20 * * * *       /usr/sbin/ntpdate 210.72.145.44          //每20分钟执行一次 或者下面的

30 5 * * *          /usr/sbin/ntpdate 210.72.145.44          //每天早晨5点半执行。

[root@node1 ~]#  ntpdate 1.cn.pool.ntp.org
24 Apr 23:34:45 ntpdate[11827]: step time server 202.118.1.81 offset 33031.663763 sec
[root@node1 ~]# date
2016年 04月 24日 星期日 23:34:49 CST

 

(4)本地主机可以安装ntp服务,作为一个独立时间同步服务器

RedHat服务器可以下载rpm安装包,然后执行

# rpm -ivh ntp-4.2.0.a.20040617-4.x86_64.rpm 或  # yum -y install ntp.x86_64

 

 

参考博客:

Linux系统时间和硬件时间设置http://www.linuxidc.com/Linux/2014-09/107029.htm

Linux下NTP服务器(时间同步及时区相关问题):http://gaoxingf.blog.51cto.com/612518/121959

        

原文地址:https://www.cnblogs.com/the-study-of-linux/p/5428827.html