ntpdateで時刻合わせ
ntpdateによる時刻合わせの備忘録
参考サイト
- ntpdate(8) manページ
- サーバーの時刻合わせコマンド、ntpdateはどのサーバーを参照すべき?:ネットワーク管理の基本Tips - @IT
- NTP/推奨公開サーバ - wiki@nothing
- crontabの書き方 | server-memo.net
ntpdateの設定
オプション
ntpdate(8) manページやサーバーの時刻合わせコマンド、ntpdateはどのサーバーを参照すべき?:ネットワーク管理の基本Tips - @ITによると, ntpdateの時刻合わせには2種類ある.
オプション | モード | 備考 |
---|---|---|
-B | slewモード | 徐々に微調整して時刻を合わせる |
-b | stepモード | 一気に(強制的に)時刻を合わせる |
1日中稼働するサーバで時刻合わせを行うのであれば,slewモードでの時刻を考えるとよいだろう. 他のオプションについては現状使う予定はないので省略する.
ntpサーバ
プロバイダなどからntpサーバを提供されていなければ,国内の利用可能な公開ntpサーバを用いるとよい. 公開ntpサーバのうち,NTP/推奨公開サーバ - wiki@nothingに載っているものを利用するとよいだろう.
ntpdateではntpサーバを複数指定することができる. 例えば,
$ sudo ntpdate -B ntp.nict.jp jp.pool.ntp.org ntp.jst.mfeed.ad.jp
もしくは,root権限から
# ntpdate -B ntp.nict.jp jp.pool.ntp.org ntp.jst.mfeed.ad.jp
のようにntpdate [オプション -B など] ntpサーバ1 ntpサーバ2 ntpサーバ3 ...
の形で指定する.
(ntpdateによる時刻合わせではroot権限が必要なのでsudoもしくはroot権限からの実行が必要となる.)
crontabの利用
24時間稼働のサーバでは定期的に自動で時刻合わせしてくれると助かるだろう. そこで,crontabを利用する.
詳しい書き方,設定の仕方についてはcrontabの書き方 | server-memo.netを参考にするとよいだろう.
crontabのオプション
オプション | 備考 |
---|---|
-e | crontabの設定編集 |
-l | crontabの設定表示 |
-r | crontabの設定削除 |
crontabはユーザごとに設定できて,表のオプションと合わせてcrontab (-u ユーザ名) [-e, -l, -r]
と実行できる.
-rオプションで誤って設定を削除してしまうのは非常に危険なので実行時には慎重に…
というのが面倒な場合には,別ファイル(例えばmycronというファイル)に設定を書いておき
crontab (-u ユーザ名) mycron
としてもcrontabに設定を反映できる.
このとき,設定の確認はcrontab (-u ユーザ名) -l
で確認するよりも,
catコマンドなどでmycronファイルを確認した方が-rオプションの誤消去を防ぐことができるだろう.
crontabの設定
crontabは以下のように書く.
[分] [時] [日] [月] [曜日(0,1,...,7)] [実行したいコマンド]
項目 | 値 |
---|---|
分 | 0から59までの数値 |
時 | 0から23までの数値 |
日 | 1から31までの数値*1 |
月 | 1から12までの数値 |
曜日 | 0から7までの数値*2 |
*1 例えば,31日がない月に31を設定しても実行されない.
*2 日:0 または 7,月:1,火:2,水:3,木:4,金:5,土:6と指定する.
また,任意の値を設定する際には "*" を用いる.
例えば,毎日0:00にコマンドを実行する場合は
0 0 * * * [コマンド]
と書く.
何分おき,何時間おきのような実行も設定できるが省略する.
以上から,例えば毎日0:05にslewモードで時刻合わせする設定はrootのcrontabに以下のように書けばよい.
5 0 * * * ntpdate -B ntp.nict.jp jp.pool.ntp.org ntp.jst.mfeed.ad.jp