2012年5月17日木曜日

crondが稼動するタイミング

閏秒関連でちょろちょろ見て回っていて思ったこと。
00秒が連続で来て、crondは誤動作しないのか。
聞いたことないからしないんだろうけど、ちょっと気になる。

あと、crondに何か軽いことをやらせると、決まってログが01秒あたりに出るので、
time_t % 60 == 1の時に処理をするのかなという感もある。

straceでcrondにattachした。
-tオプションでシステムコール発行時刻が、
-ttオプションでマイクロ秒まで出してくれる。

13:25:01.783074 gettimeofday({1337228701, 783236}, NULL) = 0
13:26:01.796409 gettimeofday({1337228761, 796515}, NULL) = 0
13:27:01.809964 gettimeofday({1337228821, 810089}, NULL) = 0

大体、毎分こんな感じで処理が始まっているので、概ね外れていなさそう。


13:33:01.994653 nanosleep({60, 0}, 0x7fff1cf6ba10) = 0
13:34:02.004750 nanosleep({59, 0}, 0x7fff1cf6ba10) = 0
13:35:01.022515 nanosleep({60, 0},

毎分の処理の終わりはこんな。
うん、01秒を狙って動いてる。


crondのソース読みたくなってきた。

0 件のコメント :

コメントを投稿