1. 程式人生 > >Linux 系統設定 : clock & clockdiff 命令詳解

Linux 系統設定 : clock & clockdiff 命令詳解

Linux clock命令用於調整 RTC 時間。

RTC 是電腦內建的硬體時間,執行這項指令可以顯示現在時刻,調整硬體時鐘的時間,將系統時間設成與硬體時鐘之時間一致,或是把系統時間回存到硬體時鐘。

語法

clock [--adjust][--debug][--directisa][--getepoch][--hctosys][--set --date="<日期時間>"][--setepoch --epoch=< >][--show][--systohc][--test][--utc][--version]

引數說明

  • --adjust  第一次使用"--set"或"--systohc"引數設定硬體時鐘,會在/etc目錄下產生一個名稱為adjtime的檔案。當再次使用這兩個引數調整硬體時鐘,此檔案便會記錄兩次調整間之差異,日後執行clock指令加上"--adjust"引數時,程式會自動根 據記錄檔案的數值差異,計算出平均值,自動調整硬體時鐘的時間。
  • --debug  詳細顯示指令執行過程,便於排錯或瞭解程式執行的情形。
  • --directisa  告訴clock指令不要通過/dev/rtc裝置檔案,直接對硬體時鐘進行存取。這個引數適用於僅有ISA匯流排結構的老式電腦。
  • --getepoch  把系統核心內的硬體時鐘新時代數值,呈現到標準輸出裝置。
  • --hctosys  Hardware Clock to System Time,把系統時間設成和硬體時鐘一致。由於這個動作將會造成系統全面更新檔案的存取時間,所以最好在系統啟動時就執行它。
  • --set--date  設定硬體時鐘的日期和時間。
  • --setepoch--epoch=<年份>  設定系統核心之硬體時鐘的新時代數值,年份以四位樹字表示。
  • --show  讀取硬體時鐘的時間,並將其呈現至標準輸出裝置。
  • --systohc  System Time to Hardware Clock,將系統時間存回硬體時鐘內。
  • --test  僅作測試,並不真的將時間寫入硬體時鐘或系統時間。
  • --utc  把硬體時鐘上的時間時為CUT,有時也稱為UTC或UCT。
  • --version  顯示版本資訊。

例項

獲取當前的時間

# clock //獲取當前的時間

顯示UTC時間

# clock -utc //顯示UTC時間

ip報文的首部和ICMP報文的首部都可以放入時間戳資料。clockdiff程式正是使用時間戳來測算目的主機和本地主機的系統時間差。

選項

-o:使用IP時間戳選項來測量系統時間差。時間戳只用3個。
-o1:使用IP時間戳選項來測量系統時間差。用4個時間戳。如果-o和-o1都沒有設定,那麼就是用ICMP時間戳來測試系統時間差。

例項

[email protected]:~$ ping -T tsandaddr www.ustc.edu.cn -c 1
PING www.ustc.edu.cn (202.38.64.9) 56(124) bytes of data.
64 bytes from 202.38.64.9: icmp_seq=1 ttl=62 time=0.823 ms
TS:     lixi-desktop.local (210.45.74.25)    12522473 absolute
    210.45.74.1    -251
    local-gw.ustc.edu.cn (202.38.64.126)    248
    202.38.64.9    -857514
Unrecorded hops: 3

--- www.ustc.edu.cn ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.823/0.823/0.823/0.000 ms

首先由上面的得出在RRT不大的時候,幾個ICMP時間戳的關係。本地主機和202.38.64.9之間的時間差約為:-857514+248-251=-857517。分別用-o(IP選項中時間戳)和不帶選項(ICMP路由時間戳)上述路由的系統時間進行測試。得到的結果:

[email protected]:~# ./clockdiff -o 202.38.64.9  
..................................................
host=202.38.64.9 rtt=1(0)ms/1ms delta=-857517ms/-857517ms Wed Dec 17 11:28:30 2008
[email protected]:~# ./clockdiff 202.38.64.9
.
host=202.38.64.9 rtt=750(187)ms/0ms delta=-857517ms/-857517ms Wed Dec 17 11:28:35 2008

兩種方法測試的都比較準確。

[email protected]:~#./clockdiff gigagate1.Princeton.EDU
..................................................
host=gigagate1.Princeton.EDU rtt=307(21)ms/271ms delta=-5ms/-5ms Wed Dec 17 11:50:16 2008

上面是測試一個RTT較大的目的主機和本地主機的系統時間差。不過在使用clockdiff的時候,需要一點運氣,因為很多路由會忽略ICMP或IP時間戳。