Linux伺服器運作久時,系統時間就會存在一定的誤差,一般情況下可以使用date指令進行時間設定,但在做資料庫叢集分片等操作時對多台機器的時間差是有要求的,此時就需要使用ntpdate進行時間同步。
一、修改時區:
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改為中國的東八區
# vi /etc/sysconfig/clock
ZONE="Asia/Shanghai"
UTC=false
ARC=false
二、配置新的時間
日期設定:
# date -s 2017/03/06
時間設定:
# date -s 18:40:00
檢視硬體時間(BIOS的):
hwclock [-rw]
-r:檢視現有BIOS時間,預設為-r參數
-w:将現在的linux系統時間寫入BIOS中
注:當我們進行完 Linux 時間的校時後,還需要以 hwclock -w 來更新 BIOS 的時間,因為每次開機的時候,系統會重新由 BIOS 将時間讀出來,是以, BIOS 才是重要的時間依據。
[root@ljohn ~]# hwclock -r
Wed 02 Nov 2016 02:53:35 AM CST -0.632895 seconds
同步BIOS時鐘,強制把系統時間寫入CMOS:
# clock -w
三、實作Internet時間同步(這裡可以忽略上面兩步)
方法1. 開機的時候自動網絡校時:
vi /etc/rc.d/rc.local
/usr/sbin/ntpdate -u 192.168.0.2 192.168.0.3 192.168.0.4; /sbin/hwclock -w
#這裡幾個IP是公司内部的NTP伺服器
方法2. 設定計劃任務
crontab格式如下:
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
設定crontab計劃任務自動校時:
使用指令crontab -e
crontab -e
10 5 * * * root /usr/sbin/ntpdate -u 210.72.145.44;hwclock -w
這樣每天5:10自動進行網絡校時,并同時更新BIOS的時間
-------------------------------------------------------------------------------
同步網絡時間:輸入ntpdate time.nist.gov同步網絡時間
[root@ljohn~]# ntpdate -u time.nist.gov #網絡時間同步指令
13 Mar 13:39:57 ntpdate[3318]: adjust time server 216.229.0.179 offset 0.018134 sec
#出現以上資訊說明同步成功#
注:如提示指令不存在,直接輸入:yum install ntp -y 安裝ntp軟體包。
注:若不加上-u參數, 會出現以下提示:no server suitable for synchronization found
-u:從man ntpdate中可以看出-u參數可以越過防火牆與主機同步;
210.72.145.44:中國國家授時中心的官方伺服器。
ntp常用伺服器:
中國國家授時中心:210.72.145.44
NTP伺服器(上海) :ntp.api.bz
美國:time.nist.gov
複旦:ntp.fudan.edu.cn
微軟公司授時主機(美國) :time.windows.com
台警大授時中心(台灣):asia.pool.ntp.org
注:經測試中國國家授時中心與NTP上海伺服器可以正常同步時間,注意需要加上-u參數越過防火牆與主機同步!
本文轉自 ljohnmail 51CTO部落格,原文連結:http://blog.51cto.com/ljohn/1905871,如需轉載請自行聯系原作者