hwclock命令參數及用法詳解

hwclock(hardware clock)

功能說明:顯示與設定硬件時鐘。

語  法:hwclock [--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test]
[--utc][--version][--set --date=<日期與時間>]

補充說明:在Linux中有硬件時鐘與系統時鐘等兩種時鐘。硬件時鐘是指主機板上的時鐘設備,也就是通常可在BIOS畫面設定的時鐘。系統時鐘則是指kernel中的時鐘。當Linux啓動時,系統時鐘會去讀取硬件時鐘的設定,之後系統時鐘即獨立運作。所有Linux相關指令與函數都是讀取系統時鐘的設定。

參  數:
  --adjust  hwclock每次更改硬件時鐘時,都會記錄在/etc/adjtime文件中。使用--adjust參數,可使hwclock根據先前的記錄來估算硬件時鐘的偏差,並用來校正目前的硬件時鐘。 
  --debug  顯示hwclock執行時詳細的信息。 
  --directisa  hwclock預設從/dev/rtc設備來存取硬件時鐘。若無法存取時,可用此參數直接以I/O指令來存取硬件時鐘。 
  --hctosys  將系統時鐘調整爲與目前的硬件時鐘一致。 
  --set --date=<日期與時間>  設定硬件時鐘。 
  --show  顯示硬件時鐘的時間與日期。 
  --systohc  將硬件時鐘調整爲與目前的系統時鐘一致。 
  --test  僅測試程序,而不會實際更改硬件時鐘。 
  --utc  若要使用格林威治時間,請加入此參數,hwclock會執行轉換的工作。 
  --version  顯示版本信息。

使用示例
示例一 hwclock命令與clock命令是一個東西
[[email protected]~]# type -a hwclock
hwclock is /sbin/hwclock
hwclock is /usr/sbin/hwclock
[[email protected]~]# ls -l /sbin/hwclock /usr/sbin/hwclock 
-rwxr-xr-x 1 root root 34096 2012-01-07 /sbin/hwclock
lrwxrwxrwx 1 root root    18 08-13 00:14 /usr/sbin/hwclock -> ../../sbin/hwclock

[[email protected]~]# type -a clock
clock is /sbin/clock
[[email protected]~]# ls -l /sbin/clock
lrwxrwxrwx 1 root root 7 08-13 00:14 /sbin/clock -> hwclock
[[email protected]~]#

示例二 顯示硬件時鐘
[[email protected]~]# hwclock
2011年11月06日 星期日 21時09分28秒  -0.134840 seconds
[[email protected]~]# hwclock -r
2011年11月06日 星期日 21時09分33秒  -0.469123 seconds
[[email protected]~]# hwclock --show
2011年11月06日 星期日 21時09分45秒  -0.127548 seconds
[[email protected]~]#

示例三 修改日期並同步到硬件時鐘
[[email protected]~]# date
2011年 11月 06日 星期日 21:11:57 CST
[[email protected]~]# date 11062112     <== 格式 mmddHHMM,即 月日時分
2011年 11月 06日 星期日 21:12:00 CST
[[email protected]~]# hwclock -w
[[email protected]~]# hwclock
2011年11月06日 星期日 21時12分13秒  -0.648818 seconds
[[email protected]~]#

注:要使系統時間準確,最好還是使用ntp方式。

示例四 使用ntpdate命令從網絡同步時間,再同步到硬件時鐘
ntpdate命令是使用NTP協議來從網絡同步時間的命令。NTP=Network Time Protocol 網絡時間協議。

[[email protected]~]# ntpdate 0.rhel.pool.ntp.org
 6 Nov 21:17:55 ntpdate[4829]: step time server 123.146.124.28 offset -1.025258 sec
[[email protected]~]# date
2011年 11月 06日 星期日 21:17:59 CST
[[email protected]~]# hwclock -w

擴展閱讀一:hwclock 使用

Linux機器上的時間比較複雜,有各式各樣的時鐘和選項等等。

一:
機器裏有兩個時鐘:硬件時鐘和系統時鐘
硬件時鐘從根本上講是CMOS時鐘;
系統時鐘是由內核維護的,它是從1969年末(即傳說中的標誌Unix時×××端的那個拂曉)開始算起的累積秒數。

在DOS或Mac系統中,起作用的是硬件時鐘。遺憾的是,你可能已經發現了,絕大多數電腦時鐘都是很不準確的。它們從根本上講是由小型電池供電的警報器時鐘,這種鋰電池一般可持續供電三年左右,那時候你係統各大塊差不多都已經過時了。

而在Linux系統中,起作用的是系統時鐘。在啓動時,它靠讀取硬件時鐘獲得計時起點,而不是靠記憶計時。

你可以通過BIOS修改系統硬件時鐘,或者如果你不想重起機器,那就用hwclock命令。

當你使用hwclock命令調整硬件時間很多次以後,hwclock就會獲取你的時鐘推移速率,然後就會把這個信息存在/etc/adjtime裏邊。以後,你就可以用它來隨時更新你的硬件時間,用一條下面的命令:

hwclock --adjust

硬件時鐘通常被設置成全球標準時間(UTC),而將時區信息保存在/usr/share/lib/timezone (或者在某些系統中可能是/usr/local/timezone)目錄下某個適當的文件中,然後用一個符號鏈接文件/etc/localtime指向它。

查看硬件時鐘用命令:

hwclock --show 或者 hwclock -r

重置硬件時鐘用:
#date 042817252009.00 //設置系統時鐘 2009 年 04 月 28 日 星期四 17:25:00 CST
#hwclock -w

如果需要修改你的時區信息,可以使用tzset命令,如果你係統中沒有這條命令,那可以用類似下面的操作:

ln -s /etc/localtime /usr/share/zoneinfo/US/Pacific

二:
實例:
板子上電
#date 042817252009.00 //設置系統時鐘 2009 年 04 月 28 日 星期四 17:25:00 CST
#hwclock -w //將系統時鐘寫入硬件時鐘
#hwclock -r //看時間是否在變化
如果沒有出錯, 就已經把2009 年 04 月 28 日 星期四 17:25:00 CST 寫入RTC chip了

爲了使系統時間和RTC時間同步,可以在初始化文件中添加命令
hwclock –s
使每次開機時讀取RTC時間,並同步給系統時間。
在根文件系統:usr/etc/rc.local中添加
/sbin/hwclock -s

斷電
等2分鐘在上電
#hwclock -r //看時間是否同步,即使與2分鐘後的時間相同

擴展閱讀二:linux中時間設置date、hwclock、clock

 

Windows時鐘大家可能十分熟悉了,Linux時鐘在概念上類似Windows時鐘顯示當前系統時間,但在時鐘分類和設置上卻和Windows大相徑庭。和Windows不同的是,Linux將時鐘分爲系統時鐘(System Clock)和硬件(Real Time Clock,簡稱RTC)時鐘兩種。系統時間是指當前Linux Kernel中的時鐘,而硬件時鐘則是主板上由電池供電的那個主板硬件時鐘,這個時鐘可以在BIOS的"Standard BIOS Feture"項中進行設置。

既然Linux有兩個時鐘系統,那麼大家所使用的Linux默認使用哪種時鐘系統呢?會不回出現兩種系統時鐘衝突的情況呢?這些疑問和擔心不無道理。首先,Linux並沒有默認哪個時鐘系統。當Linux啓動時,硬件時鐘會去讀取系統時鐘的設置,然後系統時鐘就會獨立於硬件運作。

從Linux啓動過程來看,系統時鐘和硬件時鐘不會發生衝突,但Linux中的所有命令(包括函數)都是採用的系統時鐘設置。不僅如此,系統時鐘和硬件時鐘還可以採用異步方式,即系統時間和硬件時間可以不同。這樣做的好處對於普通用戶意義不大,但對於Linux網絡管理員卻有很大的用處。例如,要將一個很大的網絡中(跨越若干時區)的服務器同步,假如位於美國紐約的Linux服務器和北京的Linux服務器,其中一臺服務器無須改變硬件時鐘而只需臨時設置一個系統時間,如要將北京服務器上的時間設置爲紐約時間,兩臺服務器完成文件的同步後,再與原來的時鐘同步一下即可。這樣系統和硬件時鐘就提供了更爲靈活的操作。

在Linux中,用於時鐘查看和設置的命令主要有date、hwclock和clock。其中,clock和hwclock用法相近,只不過clock命 令除了支持x86硬件體系外,還支持Alpha硬件體系。由於目前絕大多數用戶使用x86硬件體系,所以可以視這兩個命令爲一個命令來學習。

    1.在虛擬終端中使用date命令來查看和設置系統時間
    查看系統時鐘的操作:
    # date

    設置系統時鐘的操作:
    # date 091713272003.30

    通用的設置格式:
    # date 月日時分年.秒

    2.使用hwclock或clock命令查看和設置硬件時鐘
    查看硬件時鐘的操作:
    # hwclock --show 或
    # clock --show
    2003年09月17日 星期三 13時24分11秒 -0.482735 seconds

    設置硬件時鐘的操作:
    # hwclock --set --date="09/17/2003 13:26:00"

    或者
    # clock --set --date="09/17/2003 13:26:00"

    通用的設置格式:hwclock/clock --set --date=“月/日/年時:分:秒”。

    3.同步系統時鐘和硬件時鐘

    Linux系統(筆者使用的是Red Hat 8.0,其它系統沒有做過實驗)默認重啓後,硬件時鐘和系統時鐘同步。如果不大方便重新啓動的話(服務器通常很少重啓),使用clock或hwclock命令來同步系統時鐘和硬件時鐘。

    硬件時鐘與系統時鐘同步:
    # hwclock --hctosys

    或者
    # clock --hctosys

    上面命令中,--hctosys表示Hardware Clock to SYStem clock。

    系統時鐘和硬件時鐘同步:
    # hwclock --systohc

    或者
    # clock --systohc


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章