FreeBSD Adjkerntz简介

adjkerntz簡介◎前言不知道大家是否有時候會像我一樣會去看看系統在跑些啥東西呢?這時發現了一個很特殊的咚咚... adjkerntz -i你是不是也曾經看過但忽略了呢?◎名稱adjkerntz - 調節改變CMOS時間來反映出時區的改變及讓kernel維持著當前的時區..◎語法adjkerntz -iadjkerntz -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 ◎歷史adjkerntz 命令最早出現在FreeBSD 1.0.

    推荐阅读