ADJKERNTZ(8) | FreeBSD System Manager's Manual | ADJKERNTZ(8) |
名称
adjkerntz — ローカル時間の CMOS クロックをタイムゾーンの変更を反映するように調整し、カーネルのための現在のタイムゾーンオフセットを保持する書式
adjkerntz | -i |
adjkerntz | -a [ -s] |
解説
adjkerntz ユーティリティは、UTC がいつも設定されているカーネルクロックと、ローカル時間が設定されているかもしれない CMOS クロックとの間の適切な関係を扱います。 adjkerntz ユーティリティは、また MS-DOS ファイルシステムのようなローカル時間ファイルシステムのための適切なタイムスタンプを扱うために、カーネルに機械のタイムゾーンのシフトを教えます。これらのタイムスタンプを適切に維持する主な目的は、 FreeBSD の MS-DOS ファイルシステムと壊れた MS-DOS ファイルのタイムスタンプを修理することでなく、それらが同じシステムにインストールされるとき、同期された MS-DOS オペレーティングシステムのタイムスタンプを維持することです。ファイル /etc/wall_cmos_clock がある場合、CMOS クロックは、(MS-DOS や MS-Windows 互換モードの) ローカル時間を保持していることを意味します。このファイルが無い場合、CMOS クロックは、UTC 時間を保持していることになります。 adjkerntz ユーティリティは、この状態をカーネル変数の machdep.wall_cmos_clock に通知します。時間調整は、システムの立ち上げとシャットダウン時、そしてタイムゾーンの変更が起きた時は、いつでも必要になります。これらのことなった状況を扱うために、 adjkerntz は、二つの方法で立ち上げられます。
- -i
-
この形式は、システムの立ち上げとシャットダウンを取り扱います。マルチユーザモードの先頭で、
adjkerntz ユーティリティは、
/etc/rc からこのオプションをつけて呼び出されます。これは、他のデーモンが実行される前に行われます。
adjkerntz ユーティリティは、自分自身をバックグラウンドで実行します。その後、ローカル時間 CMOS クロックのために、
adjkerntz は、ローカル時間をそこから読み込み、カーネル時間を正しい UTC 時間に設定します。また、
adjkerntz ユーティリティは、
'adjkerntz -a' のその後の呼び出しと、ローカル時間のファイルシステムによって使用するのために、
machdep.adjkerntz カーネル変数にローカル時間ゾーンオフセットを格納します。
ローカル時間 CMOS クロックのために、 'adjkerntz -i' は、一時停止し、バックグラウンドのデーモンとして活動を停止します。このデーモンは、 SIGTERM シグナルを受け取るまでそのままです。 SIGTERM は、ふつう、システムがマルチユーザモードを終了する時に init(8) によって送られます (普通、システムがシャットダウンされる時です)。 SIGTERM を受け取った後で adjkerntz は、UTC カーネル時間クロックを読み込み、必要であれば現在のローカル時間ゾーンを反映するように CMOS クロックを更新します。その後、 adjkerntz は、終了します。
- -a [ -s]
-
この形式は、タイムゾーンの変更が起こった時に、ローカル時間 CMOS クロックとカーネル
machdep.adjkerntz 変数を更新するために使われます。例えば、夏時間に入ったり、終了したりした時に使われます。
adjkerntz ユーティリティは、カーネルクロックの UTC 時間・以前に保存したタイムゾーンオフセット・新しいタイムゾーンを計算するためのタイムゾーン変更規則を使います。これは、新しいオフセットを
machdep.adjkerntz カーネル変数に保存し、CMOS クロックを新しいローカル時間に更新します。
'adjkerntz -a' が、(タイムゾーン変更中に) 存在しない時間で実行された場合、
-s オプションが使われていない場合は、警告診断を出し、終了します。
-s オプションが使われている場合は、
adjkerntz は、30 秒間スリープしてもう一度試します。
この形式は、大多数の現代のタイムゾーンの変更が起こる、真夜中から 5:00 までの間に 30 分毎に、root の crontab(5) から呼び出されるべきです。警告: -s オプションを crontab(5) のコマンドライン中で使ってはいけません。使ってしまうと、複数の 'adjkerntz -a' がお互いに衝突してしまうでしょう。
adjkerntz ユーティリティは、カーネルタイムゾーン構造を消去し、カーネルクロックを UTC タイムゾーンで走らせます。スーパユーザの権限が、全ての操作のために必要とされます。
環境変数
- TZ
- タイムゾーンの変更規則。 tzset(3) を見てください。 tzsetup(8) もしくは zic(8) を使っている場合は、必要ありません。
関連ファイル
- /etc/localtime
- 現在の zoneinfo ファイル、 tzsetup(8) と zic(8) を参照してください。
- /etc/wall_cmos_clock
- 空のファイルです。それが存在することは、マシンの CMOS クロックがローカル時間に設定されていることを示し、一方、それが存在しないことは、 UTC の CMOS クロックであることを示しています。
診断
診断は、ありません。エラーが起こったなら、 adjkerntz は、 syslog(3) を使用してエラーメッセージをログ記録し、0 以外のリターンコードで終了します。歴史
adjkerntz ユーティリティは、 FreeBSD 1.0 で登場しました。作者
<ache@astral.msk.su>March 8, 2012 | FreeBSD |