vine-users ML アーカイブ



[vine-users:077952] Re: ntpで 時刻同期ができていない?

  • From: Taro Kawahara <tarokawa@xxxxxxxxx>
  • Subject: [vine-users:077952] Re: ntpで 時刻同期ができていない?
  • Date: Sun, 06 Jan 2008 23:19:49 +0900
河原です。

亀レスですが、ログ整理していてちょっと気になったので、
コメントを残します。

話題は、去年の11月始めごろのもので、 ntp が1秒狂うということでした。

kaz さんは書きました:

> そもそも時刻が1秒遅れてると思ったのはラジオをmp3録音したら22:45から23:00までの15分を録音したら23時の正時報が録音されていたからです。
> 録音にはffmpegを使い15分録音するコマンドをcronで動作させています。
> 

実は、 cron コマンドが、あんまり精度よくプログラムを実行開始
しないですね。。。

わたしの場合、ネットカメラをcronで制御していて、時刻に応じて
撮影位置を変えるようにスクリプトを組んでいたのですが、
ランダムに一日1〜2回ぐらい意図通りに動作せず、かなり悩みました。
それが、スクリプトの先頭で現在時刻を取得していたのです。

相当悩んで、 date コマンドを cron で走らせて;

* * * * * date >>/tmp/datelog.txt

cron が目的の時刻の1秒前にプログラムを起動することがある!
ことを発見しました。 バグというわけではなく、 cron がその程度
の精度しかないラフな設計になっているからのようです。
ま、はまりましたけど。

対処ですが、cron とは別に高精度な定時起動プログラムを自分で
書くか、 時刻をチェックして目的の時刻に至るまでの usleep を
入れるかです。 わたしは後者の方法で対処しました。

もし、絶対的な時刻がそれほど重要ではなく、分単位の精度でよいなら、
cron で起動したスクリプトに sleep(1) を入れたのち、時刻の時、分を
取得したほうが簡単ですね。 ラジオ録音であれば、絶対的な時刻が
気になるからこの手は使えないでしょうが。

以上、亀コメントでした。

--
たろかわ