CentOS 6で日付・時刻の設定¶
日付・時刻を刻むもの¶
ハードウェアクロック¶
PCは電源をONしたらそれなりに正しい時刻を持つことができるように、電源がOFFの間も電池等で駆動する時計(ハードウェアクロック)を持っています。この時計はリアルタイムクロック(RTC)とかカレンダークロックも呼ばれ、マザーボード上に回路を持つことが一般的です。ハードウェアクロックは年月日時分秒を持ちますが、時間帯(タイムゾーン)の情報はないので、UTC時刻なのかローカル時刻(例えば日本時間)なのかは人間側の決め事とします。
システムクロック¶
ハードウェアクロックから値を読み出すのは時間がかかる処理なので、Linux他の大半のOSでは起動時に一回ハードウェアクロックから時刻を取り出したら、以降はOSがメモリ上に時刻を保持し、ハードウェアクロックとは別の高精度タイマーなどの周期(割り込み)でその時刻を更新していきます。そして終了時にシステムクロックの時刻をハードウェアクロックに書き出します。
クロックを見る¶
ハードウェアクロックを見る¶
Linux OSでは、hwclockコマンドでハードウェアクロックの持つ時刻の表示、変更ができます。
--debugオプションを指定するとハードウェアクロックから読んだ時刻などを表示します。
~$ sudo hwclock --show --debug hwclock from util-linux-ng 2.17.2 /dev interface to clock を使います。 直前のずれの修正は 1969 年以降 1405595727 秒時点で行なわれました 直前の調整は 1969 年以降 1405595727 秒時点で行なわれました ハードウェア時計はUTC時刻です ハードウェア時計UTC時刻を保持しているとみなします クロックチックを待っています... クロックチックを取得しました ハードウェア時計から読込んだ時刻: 2014/07/18 15:28:47 ハードウェア時計時刻 : 2014/07/18 15:28:47 = 1969 年以来 1405697327 秒 2014年07月19日 00時28分47秒 -0.031665 秒
--debugオプションを指定しないと、ハードウェアクロックの保持する時刻ではなく、それをOS側の時間帯にしたものを表示します。
hwclockは、/etc/adjtimeを見てハードウェアクロックがUTCかローカルタイムかを決めます。
/etc/adjtimeの例を以下に示します。最後の行にUTCとあればハードウェアクロックがUTCであるとして扱い、LOCALとあればハードウェアクロックがローカルタイムであるとして扱います。
-0.040164 1405595727 0.000000 1405595727 UTC
システムクロックを見る¶
Linux OSではdateコマンドでシステムクロックの表示、変更を行います。
- OSの時間帯で今の時刻を表示
~$ sudo date 2014年 7月 19日 土曜日 00:41:53 JST
- UTC時刻で今の時刻を表示
~$ sudo date -u 2014年 7月 18日 金曜日 15:41:55 UTC