鈴木です。 logger を使った方法だと、あまりに時間がばらつくので、 crond 自体を改造(といっても、syslog に書き込むところで gettimeofday(&t, NULL); の結果を追加して解像度を上げただけですが) して、ログを観測してみました。 すると、 Sep 22 01:26:00 irish CROND[3668]: [1222014360.277894](user_1) CMD (~/check_fetch 2>&1 /dev/null) Sep 22 01:27:00 irish CROND[3704]: [1222014420.468917](user_1) CMD (~/check_fetch 2>&1 /dev/null) Sep 22 01:28:00 irish CROND[3732]: [1222014480.651941](user_1) CMD (~/check_fetch 2>&1 /dev/null) Sep 22 01:29:00 irish CROND[3760]: [1222014540.806967](user_1) CMD (~/check_fetch 2>&1 /dev/null) Sep 22 01:30:00 irish CROND[3788]: [1222014600.997993](user_1) CMD (~/check_fetch 2>&1 /dev/null) Sep 22 01:30:01 irish CROND[3792]: [1222014601.009001](user_2) CMD (/home/user_2/setDDNS.sh>/dev/null) .............. Sep 22 01:36:00 irish CROND[4008]: [1222014960.292252](user_1) CMD (~/check_fetch 2>&1 /dev/null) Sep 22 01:37:00 irish CROND[4052]: [1222015020.483267](user_1) CMD (~/check_fetch 2>&1 /dev/null) Sep 22 01:38:00 irish CROND[4097]: [1222015080.674313](user_1) CMD (~/check_fetch 2>&1 /dev/null) Sep 22 01:39:00 irish CROND[4129]: [1222015140.861303](user_1) CMD (~/check_fetch 2>&1 /dev/null) Sep 22 01:40:01 irish CROND[4160]: [1222015201.052362](user_1) CMD (~/check_fetch 2>&1 /dev/null) Sep 22 01:40:59 irish CROND[4197]: [1222015259.815549](user_1) CMD (~/check_fetch 2>&1 /dev/null) Sep 22 01:42:00 irish CROND[4233]: [1222015320.994509](user_1) CMD (~/check_fetch 2>&1 /dev/null) Sep 22 01:42:01 irish CROND[4236]: [1222015321.002658](user_2) CMD (/home/user_2/setDDNS.sh>/dev/null ) 何やら、常時オフセットが加算されていっているような結果が出ました。 このオフセットは、システムの忙しさにも左右されるように見えます。 起動が早すぎる 01:40:59 のログも、ntpd 関連にしては -180ms とオフセットが大きすぎますし、 (ntpd が、このときだけ step モードで時間調整したと考えることもできますが...) やはり、 次のジョブが起動するまでの sleep() に与える秒数を計算するとき、 秒の境界付近にいると、オーバーヘッドにより結果が1秒少なくなくなるときがある というのが正解のように見えます。 -- Hiroshi Suzuki It's crucial qp setter AT i-red DOT info to my (..)/ http://my.reset.jp/~setter/ Well-being - - http://i-red.info/ ~~ Powered by Linux/DeleGate _____________*-_____