Cronを2秒おきに実行する

Cronは分単位までの設定は簡単にできるけど、秒単位で実行したい場合

* * * * * for i in `seq 0 2 59`;do (sleep ${i}; sudo sh -c "ls -l /tmp/rec > /usr/local/nginx/html/dashbord/rec.txt") & done;

とする事で、秒単位での実行ができる。

sleep がキモ(きもいじゃないぞ、肝)

sleepコマンド

forで回して seq の間隔ごとに sleep させるコマンドを発行する。上記が実行されると、

sleep 2; sudo sh -c "ls -l /tmp/rec > /usr/local/nginx/html/dashbord/rec.txt"
sleep 4; sudo sh -c "ls -l /tmp/rec > /usr/local/nginx/html/dashbord/rec.txt"
sleep 6; sudo sh -c "ls -l /tmp/rec > /usr/local/nginx/html/dashbord/rec.txt"
・・・

 

といったコマンドが発行されることになり、上記例だと2秒間隔で実行されることになる。

http://www.pc-builder.info/cron_seconds.html