adjkerntz簡介
◎前言 不知道大家是否有時候會像我一樣會去看看系統在跑些啥東西呢? 這時發現了一個很特殊的咚咚... 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.
标签: