2009-01-22
cronで90分おきにコマンドを実行したい
crontabで○分おきにって00-59しか指定できないんですよね!*1
じゃあ90分おきに実行したい場合はどうしよう?と思って、crontabに
*/30 * * * * test $( expr $( date +%s ) % 5400 ) -eq 0 && hoge.zsh
と書いてみたけど動かない。。
しょうがないから、crontabは
*/30 * * * * hoge.zsh
として、90分の判定はhoge.zshで判定することにしました。
# 90分ごとにコマンドを実行 DATE=`date "+%Y.%m.%d %H:%M:%S"` DATE_SEC=`date +%s` # 現在のエポック秒(1970.1.1 0:00:00からの経過時間) DATE_MIN=`expr $DATE_SEC / 60` # エポック秒を分に変換 if [ `expr $DATE_MIN % 90` -eq 0 ]; then echo $DATE >> ~/scripts/hoge.log # ここに実行したいコマンド else echo "nonAction.$DATE... $DATE_MIN:$DATE_SEC" >> ~/scripts/hoge.log fi
こんな感じかなー。cronで30分に1回このスクリプトが実行されて、更にスクリプト内で90分かどうかをチェックします。
最初date +%sを5400秒(90分)で割っていたんだけど、実行時に1秒ほどずれてしまうことが度々あったので、分に変換しています。
*1:正確には、毎時00-59/○分
トラックバック - http://d.hatena.ne.jp/ama-ch/20090122/1232624505
リンク元
- 35 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=hmP&q=mac+emacs+python&btnG=検索&lr=
- 20 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GFRD,GFRD:2007-34,GFRD:ja&q=python+要素を検索 インデックスを返す
- 16 http://d.hatena.ne.jp/
- 15 http://www.google.co.jp/search?q=コマンドランチャ&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_jaJP310JP310
- 12 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=cron+expr&num=50
- 10 http://www.google.co.jp/search?client=firefox-a&rls=org.mozilla:ja-JP-mac:official&channel=s&hl=ja&q=mac+shell+設定&lr=&btnG=Google+検索
- 10 http://www.google.co.jp/search?hl=ja&q=シェル 60秒おきにコマンド実行&lr=
- 9 http://www.google.co.jp/search?hl=ja&safe=off&client=firefox-a&rls=org.mozilla:ja:official&hs=0XU&q=fenrir+launchy&btnG=検索&lr=lang_ja
- 9 http://www.google.co.jp/search?q=easy_install&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 8 http://74.125.153.132/search?q=cache:Sc5UYpqmO88J:d.hatena.ne.jp/ama-ch/20090117/1232167431+php+シェル applescript 実行&cd=9&hl=ja&ct=clnk&gl=jp&lr=lang_ja&client=firefox
