- PR -

cronが指定曜日以外に動作してしまう

1
投稿者投稿内容
わか
会議室デビュー日: 2004/06/15
投稿数: 1
投稿日時: 2007-01-04 13:50
お世話になります、わかです。

<概要>
これまでcronにて、毎週日曜日に実行していたスクリプトが
2007/1/2(火)にcronにて実行されてしまいました。(期待しない動作)
原因を探るためのアドバイスをいただければ幸いです。


<詳細>
毎週日曜日にcronでスクリプトを定期実行しているサーバがあります。
これまで1年程度稼動させていますが、期待しているとおり日曜日にスクリプトは実行されており、他の曜日に実行されることはありませんでした。

しかし、つい先日の2007/1/2(火)に該当スクリプトがcronにて実行されてしまいました。
(/var/log/cron にて該当時間に実行されたことを確認しました)

cronの内容はoracleのシャットダウンスクリプトであり、
バックグラウンドで動作しつづける類のスクリプトではありません。

他のユーザーにて誤って該当のスクリプトを実行していないことは確認しました。

また、crontab(5)の「コマンド実行の日は 2 つのフィールドで指定できる」が原因でないことは確認しました。
http://www.linux.or.jp/JM/html/cron/man5/crontab.5.html

原因に検討がつかず、困っております。
識者の方からアドバイスいただければ幸いです。


<環境>
RedHatEnterpriseLinux ES 3

# uname -a
Linux SERVER_NAME 2.4.21-20.ELsmp #1 smp wed Aug 18 20:46:40 EDT 2004 i686 i686 i386 GNU/Linux


<crontabの内容>
# crontab -e
30 17 * * 0 /path/to/script


<crontabのログ>
# tail /var/log/cron
Jan 2 17:30:01 SERVER_NAME crond[1125]: (root) CMD (/path/to/script)

[ メッセージ編集済み 編集者: わか 編集日時 2007-01-04 13:52 ]
リダーマーク
会議室デビュー日: 2007/01/04
投稿数: 6
投稿日時: 2007-01-04 17:23
こんにちは。

1月2日が日曜日なのは、2005年ですね。
今、そのOSのシステム年月日は正しいですよね?

わか
常連さん
会議室デビュー日: 2003/12/14
投稿数: 47
お住まい・勤務地: 広島市
投稿日時: 2007-01-05 11:20
リダーマークさま アドバイスありがとうございます。

はい、OSのシステム日付が正しいことは確認しています。
また、各種ログにも正しいシステム日付が記録されていることを確認しています。

気になることといえば、外部のNTPサーバと時刻同期していますが、
仮にそのNTPサーバの時刻が(一時的に)年単位で誤っていた場合、年単位で修正されることは発生しえるのでしょうか?

#NTPサーバとクライアントにおいて、閾値以上誤差がある場合は修正しないと考えていましたが、
#ケースによっては修正が発生する可能性もあるのでしょうか。

引き続き、アドバイスいただければ幸いです。
tirol
会議室デビュー日: 2007/01/05
投稿数: 1
投稿日時: 2007-01-05 14:13
anacronで実行されていたというオチでは?
わか
常連さん
会議室デビュー日: 2003/12/14
投稿数: 47
お住まい・勤務地: 広島市
投稿日時: 2007-01-05 16:22
tirolさま アドバイスありがとうございます。

もしやと思い確認してみましたが、anacronは使用していませんでした。

次の方法で確認しました。
# rpm -qa | grep anacron
(表示なし)

/etc/anacrontab
(ファイルの存在なし)
リダーマーク
会議室デビュー日: 2007/01/04
投稿数: 6
投稿日時: 2007-01-10 08:18
xntpdだと1000秒以上の誤差があった場合、終了しちゃうみたいですね。
その場合、syslogにログが残りますので、確認されてみては?

ntpdate コマンドだと大幅な誤差でも強制的に合わせてしまいます。
マシンの起動時のスクリプトに書かれてるかもです。
わか
常連さん
会議室デビュー日: 2003/12/14
投稿数: 47
お住まい・勤務地: 広島市
投稿日時: 2007-01-15 15:30
リダーマークさま、アドバイスありがとうございます。

/etc/rc.d/rc.local を調べましたが、ntpdate にて時刻同期は行っていないようです。
# ntpd をデーモンとして起動しています

また、/var/log/messages には ntp 関連のログは出力されていませんでした。

迷路に迷い込んでしまいました。
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2007-01-15 20:27
こんばんは

見当違いかもしれませんが別のユーザが cronで同じスクリプトを実行していたりしないでしょうか?
/var/spool/cron にあるファイルを確認してみてください。
1

スキルアップ/キャリアアップ(JOB@IT)