[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 系統管理 > FreeBSD > 正文
FreeBSD命令adjkerntz簡介(調節改變CMOS時間)
本文出自:OHaHa的學習心得[ohaha.ks.edu.tw] 作者:藍色泡泡(panda@ks.edu.tw) (2002-03-19 08:02:00)
◎前言
     不知道大家是否有時候會像我一樣會去看看系統在跑些啥東西呢?
     這時發現了一個很特殊的咚咚... adjkerntz -i 
     你是不是也曾經看過但忽略了呢?
               
◎名稱
     adjkerntz - 調節改變CMOS時間來反映出時區的改變及讓kernel維持著當前的時區..

◎語法
     adjkerntz -i
     adjkerntz -a [-s]

◎敘述
     adjkerntz 在 kernel 及 CMOS 時間中維持適當的關,
     kernel 時間是以 UTC 為準,而 CMOS 時間是以當地時間為準。
     
     :UTC = 世界標準時間 (格林威治時間)
     
     adjkerntz 主要的目的在於維護同一機器中,
     FreeBSD MS-DOS 檔案系統及 MS-DOS 作業系統的時間一致。

     若 /etc/wall_cmos_clock 這個檔案存在,那表示 CMOS 時間設定於當地時間;
     若檔案不存在,那表示 CMOS 時間被設定為 UTC 時間。
      
     adjkerntz 將這個狀況導入 machdep.wall_coms_clock kernel variable。

◎參數

     時間調節在系統開機及關機,以及時區改變時是很需要的。
     為了要處理不同的狀況,adjkerntz 可以以兩種方式執行。

     -i   這個形式處理系統開機及關機。
          在進入多人模式,在任何其他服務啟動前,
          adjkerntz 以 /etc/rc 啟動,並放入背景執行,
          然後,adjkerntz 透過 CMOS 讀取當地時間,並且將時間設定為 UTC 時間。

          adjkerntz 會一直以 daemon 的形態於背景執行,直到他收到 SIGTERM 訊息。
          SIGTERM 訊息通常會在系統離開多人模式之後由 init 送出。
          (通常是系統shoutdown造成系統離開多人模式)
          
          在收到 SIGTERM 訊息之後,adjkerntz 讀取UTC kernel 時間,
          並且更新 CMOS 時間。
          若可能的話,結束前會確保CMOS時間能夠反應正確的當地時間。

  -a [-s] 當時區改變時,這個形態被用來更新 CMOS 當地時間,
 及kerlnel machdep.adjkerntz variable,
   
 例如:
 當進入或結束日光節約時間,adjkerntz 使用kernel時間的UTC時間,
 儲存先前時區,並改變時區規則來計算新的時區。
 adjkerntz 儲存新的設定到 machdep.adjkerntz kernel variable ,
 並且更新 CMOS 時間。
   
 若 adjkerntz -a 在一個不存在的時區(在時區改變時)被啟動,
 adjkerntz 在結束時會顯示警告的訊息,除非 -s 參數被使用,
 在這種情況下,adjkerntz 會休息(sleep) 30 分鐘然後重新嘗試。
          這個形式(adjkerntz -a),在 root 的 crontab 中,於
 每次午夜前的半個小時及5 am 當許多現在時區改變時被啟動。
 實際上的狀況如下... /etc/crontab 顯示
           
◎相關檔案
     /etc/localtime        目前時區資訊檔案。
     /etc/wall_cmos_clock  空白檔案。
                           此檔存在表示機器的CMOS時間被設定在當地時間。 
                           此檔若不存在表示使用UTC CMOS時間。

◎相關訊息
     平時不會有任何訊息,若有任何錯誤發生,
     adjkerntz 會經由 syslog 記錄錯誤訊息,
     並且回傳一個非0的值。

◎adjkerntz 作者
     Andrey A. Chernov <ache@astral.msk.su>

◎歷史
     adjkerntz 命令最早出現在FreeBSD 1.0. (http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★