在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