玩linux系統的人應該知道這個事情,那就是Linux系統時間有兩個,一個是硬件時間,即BIOS時間;另一個是系統時間,即linux系統Kernel(內核程序)時間。當Linux啓動時,系統Kernel會去讀取硬件時鐘的設置,然後系統時鐘就會獨立於硬件運作。而某些時候,我們會發現系統時鐘和硬件時鐘不一致,此時需要進行時間同步。
一、設置Linux系統的時區
1.查看時間或者時區
#查看時間
[root@localhost ~]# date
Wed Aug 14 08:08:05 EDT 2019 #EDT 北美東部夏令時間,不是中國所在的東八區
或者
#查看時區 東八區樣式:CST +0800
[root@localhost ~]# date +"%Z %z"
EDT -0400
2.修改爲東八區的亞洲/上海。
# 覆蓋/etc/sysconfig/clock,修改爲亞洲/上海時區
[root@localhost ~]# echo "Asia/Shanghai" > /etc/sysconfig/clock
# 刪除原有的本地時間文件
[root@localhost ~]# rm -f /etc/localtime
# 鏈接上海文件
[root@localhost ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#再次查看時區
[root@localhost ~]# date +"%Z %z"
CST +0800
二、利用定時器crontab來定時進行時間同步
1. 查看是否安裝了ntp服務,
[root@localhost ~]# rpm -qa | grep ntp
[root@localhost ~]#
沒有任何輸出,說明沒有安裝,此時應該先安裝:yum -y install ntp.x86_64。如果有,直接去2。
[root@localhost ~]# yum -y install ntp.x86_64
2. 編輯root用戶的定時任務
[root@localhost ~]# crontab -u root -e
3. 設置每分鐘同步一次(設置一分鐘只是爲了測試)
前五列的*,分別表示:分鐘 小時 日 月 周
*/1 :寫在分鐘的位置,表示頻率,每一分鐘的含義
第六列:表示要執行的命令:ntpdate命令要寫絕對路徑:/usr/sbin/ntpdate
-u 用於指定時間服務器的一個參數
time.windows.com :是微軟時間服務器
;兩個命令的分隔符
/sbin/hwclock -w :將時間寫入到bios中。
到這裏直接去看4。同步成功後,再回來設置實際工作:
0 6 1,10,20 1-12 0,3,6 /usr/sbin/ntpdate -u time.windows.com;/sbin/hwclock -w
0:表示0分。 範圍0~59.
6:表示6點。 範圍0~23
1,10,20:表示1號,10號,20號。範圍1~31
1-12:表示每個月。範圍1~12
0,3,6:表示週日,週四,週日。範圍0-6,0表示週日注意:逗號分開表示集合。-連接表示區間
4. 一分鐘左右,再次查看時間: 成功同步。哦耶
[root@localhost ~]# date
Wed Aug 14 12:32:42 CST 2019
-----------------------------------------------如有疑問,敬請留意----------------------------------------------------