Linuxの時計まわりのおぼえがき

対象OS

設定ファイル周りについては、Amazon Linux AMI や CentOS6系以前のお話

ただし、クロックそのもの話は各Linuxでもだいたいおんなじなはず

クロック周りのはなし

時計。Linuxは2種類のクロックをもつ

  • ハードウェアクロック
  • システムクロック

ハードウェアクロック

RTC(リアルタイムクロック)とも呼ばれる。マザーボードが持つ物理的な時計

ボタン電池で電力供給され、電源OFF時にも時刻が維持され続ける

システムクロック

OSのソフトウェアで管理するクロック

OS起動時に、ハードウェアクロックの値を元に設定される

1970年01月01日00時00分00秒 からの経過秒数(UNIX時間) の形式で管理されている

インターバルタイマー

マザーボードの機能の1つ。定期的に割り込みをかけて、システムクロックの時刻を進める

タイムゾーン周りの話

用語

  • UTC: 世界標準時
  • タイムゾーン: 地球上で同一の標準時を採用している地域の集合。UTC±時差 で表記される。日本標準時ならば UTC+9
  • ローカルタイム: タイムゾーンで示される現地時刻

Linuxでのタイムゾーンの設定方法

/usr/share/zoneinfo に各タイムゾーンの設定ファイルが格納されている

  • 東京ならば、 /usr/share/zoneinfo/Asia/Tokyo

/etc/localtime に上記のタイムゾーンの設定ファイルと同様のものをおけば、それがシステムのタイムゾーンとなる

ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

date コマンドなどの時刻を表示するコマンドは、/etc/localtime の設定を見て、システムクロックからローカルタイムを計算する

ハードウェアクロックのタイムゾーン

ハードウェアクロック自体はタイムゾーンを持たないが、ハードウェアクロックの値の解釈を設定することが可能

/etc/sysconfig/clock で設定可能

ZONE="Asia/Tokyo"
UTC=true
  • UTC: ハードウェアクロックの値の解釈
    • true : UTCとして解釈する
    • true : ローカルタイムとして解釈する
  • ZONE: /etc/localtime の参照元を設定

マシンを再起動したり、glibcのupdateなどで /etc/localtime の参照元は、ZONEで指定した値に置きかわる

参考

park12.wakwak.com

www.atmarkit.co.jp