FreeBSD Adjkerntz简介
发表于:2007-07-01来源:作者:点击数:
标签:
adjkerntz簡介 ◎前言 不知道大家是否有時候會像我一樣會去看看系統在跑些啥東西呢? 這時發現了一個很特殊的咚咚... adjkerntz -i 你是不是也曾經看過但忽略了呢? ◎名稱 adjkerntz - 調節改變CMOS時間來反映出時區的改變及讓kernel維持著當前的時區.. ◎語
◎前言
不知道大家是否有時候會像我一樣會去看看系統在跑些啥東西呢?
這時發現了一個很特殊的咚咚... 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 送出。
(通常是系統shou
tdown造成系統離開多人模式)
在收到 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 <>
◎歷史
adjkerntz 命令最早出現在FreeBSD 1.0.
原文转自:http://www.ltesting.net