由于硬體的原因,機器或多或少的根标準時間對不上,一個月的誤差幾秒到幾分鐘不等。對于伺服器來說時間不準,會有很多麻煩。例如,支付的時候,無法下單,遊戲無法登入等。自己用的PC就無所謂了,手動改一下就行了。
硬體時間的設定,可以用hwclock或者clock指令。其中,clock和hwclock用法相近,隻用一個就行,隻不過clock指令除了支援x86硬體體系外,還支援Alpha硬體體系。
//檢視硬體時間可以是用hwclock,hwclock --show 或者hwclock -r
[root@localhost ~]# hwclock --show
2008年12月12日星期五 06時52分07秒 -0.376932 seconds
三.系統時間和硬體時間的同步
同步系統時間和硬體時間,可以使用hwclock指令。
//以系統時間為基準,修改硬體時間
[root@localhost ~]# hwclock --systohc<== sys(系統時間)to(寫到)hc(Hard Clock)
[root@localhost ~]# hwclock -w
//以硬體時間為基準,修改系統時間
[root@localhost ~]# hwclock --hctosys
[root@localhost ~]# hwclock -s
一,用ntpdate從時間伺服器更新時間
如果你的linux系統根本沒有ntpdate這個指令
- yum install ntp
安裝完了之後,你不要做什麼配置,也不需要,直接測試一下
- [root@localhost ~]# ntpdate time.nist.gov
- 22 Oct 21:11:43 ntpdate[5014]: adjust time server 207.200.81.113 offset -0.018788 sec
如果出去上面的内容說明,同步成功了。然後在crontab裡面加上以下内容。
- */10 * * * * ntpdate time.nist.gov #域名或IP
每隔十分鐘同步一次。推薦幾個時間伺服器。
time.nist.gov
time.nuri.net
0.asia.pool.ntp.org
1.asia.pool.ntp.org
2.asia.pool.ntp.org
3.asia.pool.ntp.org
二,用ntp搭建自己的時間伺服器
上面我們是利用别人的時間伺服器來同步時間,這些時間伺服器都是比較權威的。當我們自己搭建時間伺服器就不用crontab來定時去跑。
1,安裝時間伺服器ntp
2,配置ntp
檢視複制列印?
- [root@localhost ~]# cat /etc/ntp.conf |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'
- restrict default ignore //預設不允許修改或者查詢ntp,并且不接收特殊封包
- restrict 127.0.0.1 //給于本機所有權限
- restrict 192.168.1.0 mask 255.255.255.0 notrap nomodify //給于區域網路機的機器有同步時間的權限
- server time.nist.gov prefer //設定時間伺服器,加prefer表示優先
- server 0.asia.pool.ntp.org
- server 1.asia.pool.ntp.org
- server 2.asia.pool.ntp.org
- server 127.127.1.0 # local clock
- fudge 127.127.1.0 stratum 10
- driftfile /var/lib/ntp/drift
- keys /etc/ntp/keys
3,啟動 ntp
- [root@localhost ~]# /etc/init.d/ntpd start
4,檢視并測試
- [root@localhost ~]# netstat -upnl |grep ntpd //檢視時程
- [root@localhost ~]# ntpq -pn //檢視同步的伺服器IP
- remote refid st t when poll reach delay offset jitter
- ==============================================================================
- 50.77.217.185 .INIT. 16 u - 64 0 0.000 0.000 0.000
- 202.90.158.4 .INIT. 16 u - 64 0 0.000 0.000 0.000
- 202.71.100.89 .INIT. 16 u - 64 0 0.000 0.000 0.000
- 202.134.1.10 .INIT. 16 u - 64 0 0.000 0.000 0.000
- *127.127.1.0 .LOCL. 10 l 18 64 377 0.000 0.000 0.001
- [root@localhost ~]# ntpstat //同步的結果
- synchronised to local net at stratum 11
- time correct to within 12 ms
- polling server every 512 s
remote:即NTP主機的IP或主機名稱。注意最左邊的符号,如果由“+”則代表目前正在作用鐘的上層NTP,如果是“*”則表示也有連上線,不過是作為次要聯機的NTP主機。
refid:參考的上一層NTP主機的位址
st:即stratum階層
when:幾秒前曾做過時間同步更新的操作
poll:下次更新在幾秒之後
reach:已經向上層NTP伺服器要求更新的次數
delay:網絡傳輸過程鐘延遲的時間
offset:時間補償的結果
jitter:Linux系統時間與BIOS硬體時間的差異時間
推薦第一種方法,雖然搭建個時間伺服器,還是比較簡單的,但是我覺得沒有這個必要。如果用别人的時間伺服器,每隔10分鐘同步一次,可以精确到毫秒。