cronが設定した時間どおりに実行されない!
crontab で設定した時間どおりに、コマンドが実行されないという現象に出くわして困ったのですが、何とか解決できたのでその方法を紹介しておきます。
まず以下のような設定(1分ごとに実行)をしてみると、ちゃんと動きます。
* * * * * date >> /path/to/cron_check.txt
次に以下のような設定(14時台で1分毎に実行)をしてみると、14時台にも関わらず実行されません。
* 14 * * * date >> /path/to/cron_check.txt
もしかしてタイムゾーンがズレている?と思い、次のように仕込んでみました。
* 0 * * * echo '0' >> /path/to/cron_check.txt
* 1 * * * echo '1' >> /path/to/cron_check.txt
* 2 * * * echo '2' >> /path/to/cron_check.txt
* 3 * * * echo '3' >> /path/to/cron_check.txt
:
* 22 * * * echo '22' >> /path/to/cron_check.txt
* 23 * * * echo '23' >> /path/to/cron_check.txt
* 1 * * * echo '1' >> /path/to/cron_check.txt
* 2 * * * echo '2' >> /path/to/cron_check.txt
* 3 * * * echo '3' >> /path/to/cron_check.txt
:
* 22 * * * echo '22' >> /path/to/cron_check.txt
* 23 * * * echo '23' >> /path/to/cron_check.txt
すると14時台なのに、cron_check.txt に出力されたのは「0」。9時間ずれじゃないところが何となく納得いかないものの、やはりタイムゾーンが狂ってるっぽいです。
» NetBSD で cron の動作時間がずれる – CORY's twilight zone
» タイムゾーン
を参考にして、 crontab の先頭に
TZ="Japan"
と追記し、
sudo /sbin/service crond restart
で cron のサービスを再起動したところ、期待通りに実行されるようになったのでした。(TZ の代わりに CRON_TZ としてもうまくいきました。)
もし、同じような問題に出会った方は試してみてください。
About this entry
- Published:
- 2010/12/24
- Category:
- web development
- Tags:
- No tags for this post.
- Response:
- 0 comment | 0 trackback






No Trackbacks
trackback uri:コメントやトラックバックは承認待ちになる場合がありますので、すぐに反映されない場合はしばらくお待ちください。