時刻設定
Linuxを使っていると、システムクロックが狂ってくることがある。Windowsではシステム時計といっていたが、Linuxでは一般的にシステムクロック
といういい方をする。そのままではあるが。システムクロックを表示するコマンドが、dateコマンド
。dateコマンドを使って、時間合わせをすることもできる。
システムクロックだが、OS起動時にハードウェアクロック
から引用されることになる。クロックシステムが狂っているということは、つまり、ハードウェアクロックが狂っているということになる。システムクロックの時刻さえ正しければ、ハードウェアクロックが多少狂っていたとても何ら問題はない。各種システムが参照する時刻は、システムクロックから参照しており、ハードウェアクロックを直接参照しているわけではないからだ。
Windowsを使っている時は、システムクロックを時々修正することはあっても、ハードウェアクロックを修正するモチベーションまではなかった。ハードウェアクロックを修正するにはWindows起動前にBIOS画面を立ち上げて、そこで修正しないといけないからだ。しかし、Linuxであれば、CUIから直接ハードウェアクロックを修正することができる。
システムクロックを表示するコマンドがdateコマンド
であったが、ハードウェアクロックを表示するコマンドはhwclockコマンド
になる。date ; sudo hwclock
とワンライナーでコマンド入力すると、2つの時間がほぼ同時に表示できるので、差異が一目瞭然で確認できる。また、ハードウェアクロックを修正する時も、hwclockコマンドを使って修正が行える。
hwclockには様々なオプションが用意されている。ハードウェアクロックをシステムクロックに同期させたり、逆に、システムクロックをハードウェアクロックに同期させることもできる。OS起動時は、ハードウェアクロックをシステムクロックに同期させ、シャットダウン時には、逆に、システムクロックをハードウェアクロックに同期させる処理を、内部的に行っているようだ。なので、運用途中に、手動で同期合わせを行う必要性はほぼないということになる。
さて、システムクロックが狂っていたら、スマホで時間を確認して、dateコマンドで手動で修正してもいいのだが、折角なので、NTPサーバーから標準時刻を秒単位で取得することもできる。この時に使うコマンドが、ntpdateコマンド
になる。
ntpdate NTPサーバーのURL
とすると、NTPサーバーから時間を取得することができる。そして、取得した時刻はシステムクロックに反映される。ハードウェアクロックではない。そして、その後、hwclockコマンドを使って、ハードウェアクロックに同期させるという手順となる。
NTPの次期バージョンとしてChrony
というツールがあるが、Chronyを使うと、NTPサーバーから取得した時刻を、ハードウェアクロックに直接反映させることができるようになる。どうも、NTPを使うよりもChronyを使う方がトレンドになっているようだ。
ntpdateコマンドを使って、手動で時刻合わせを行う以外にも、ntpdサービスを常駐させて、自動で定期的に時刻を合わせる方法もある。ntpはデフォルトでは入っていないため、別途インストールすることになる。また、ntpの設定を行うファイルは、/etc/ntp.confファイル
となる。ここを編集して、ntpdを起動すればOKのようだ。
サービスを常駐させると、メモリ容量を圧迫することになり、ネットワークトラフックも増えることになるため、そこまでしてクライアントでNTPを使うべきかどうかは、少し考えた方がいいかも。