中野智文のブログ

データ・マエショリストのメモ

virtualbox の時刻がずれている

背景

make をやっても、うまくいかないことがある。 ターゲットを共通化するために、前処理の複数のターゲットのアウトプットを同じものにしてあったが、 時刻がずれているため?、本来意図してない処理が呼ばれてしまう模様。

ntpd がインストールされているかどうかを確認する。

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp00.iij.net   210.130.188.1    3 u  332 1024  377    2.571  1065461 2351.27
 ntp01.iij.net   210.130.188.1    3 u  621 1024  377    2.735  1066141 1942.83
 ntp02.iij.net   210.130.188.1    3 u  761 1024  377    2.874  1065675 2352.60

で確認。大幅にずれていることを確認した。

時刻を設定する

大幅にずれている場合は自動調整されない。 ntpdate ntp.nict.jp などのコマンドで設定するが、先に ntpd を止めておかないと、

24 May 13:16:45 ntpdate[8055]: the NTP socket is in use, exiting

みたいなエラーが出てしまう。

$ sudo service ntp stop
 * Stopping NTP server ntpd
   ...done.
$ sudo ntpdate ntp.nict.jp
24 May 13:44:18 ntpdate[8105]: step time server 133.243.238.243 offset 1071.115719 sec
$ sudo service ntp start
 * Starting NTP server ntpd
   ...done.
$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp00.iij.net   210.130.188.1    3 u   11   64    1    2.312    0.382   0.000
 ntp01.iij.net   210.130.188.1    3 u   10   64    1    3.126    0.034   0.000
 ntp02.iij.net   210.130.188.1    3 u    9   64    1    3.070   -0.137   0.000

防止策

また発生するでしょう。

makefile のターゲットの先頭に、次のように書いた。

test  `ntpq -p | grep '*' | wc -l` -ge 1 # clock sync check

意味:ntpq -p で * の行が一行以上あれば(syncされたサーバがある)OK。なければ失敗。