秒速でcronを実行する方法
cronは最短で毎分実行ですが秒間隔で実行するにはどうすればいいか気になったので調べてみました。
検証をかねて、現在時刻をログに残すシェルスクリプトを書いてみます。
- log.shを作成
# log.sh
#!/bin/sh
LOG=now.log
date >> ${LOG}
- cronに登録します
# crontab -e
* * * * * /path/to/log.sh
- ログを確認
tail -f now.log
ログを確認すると1分間隔で実行されていることが分かります
- 1秒間隔で実行するには以下のようにcron設定を変更します
crontab -e
* * * * * for i in `seq 0 1 59`;do (sleep ${i} ; /path/to/log.sh) & done;
- ログを確認
tail -f now.log
Fri Dec 27 20:45:00 JST 2013
Fri Dec 27 20:45:01 JST 2013
Fri Dec 27 20:45:02 JST 2013
Fri Dec 27 20:45:03 JST 2013
Fri Dec 27 20:45:04 JST 2013
Fri Dec 27 20:45:05 JST 2013
Fri Dec 27 20:45:06 JST 2013
Fri Dec 27 20:45:07 JST 2013
Fri Dec 27 20:45:08 JST 2013
Fri Dec 27 20:45:09 JST 2013
Fri Dec 27 20:45:10 JST 2013
Fri Dec 27 20:45:11 JST 2013
Fri Dec 27 20:45:12 JST 2013
Fri Dec 27 20:45:13 JST 2013
Fri Dec 27 20:45:14 JST 2013
Fri Dec 27 20:45:15 JST 2013
Fri Dec 27 20:45:16 JST 2013
Fri Dec 27 20:45:17 JST 2013
Fri Dec 27 20:45:18 JST 2013
Fri Dec 27 20:45:19 JST 2013
Fri Dec 27 20:45:20 JST 2013
Fri Dec 27 20:45:21 JST 2013
Fri Dec 27 20:45:22 JST 2013
Fri Dec 27 20:45:23 JST 2013
Fri Dec 27 20:45:24 JST 2013
Fri Dec 27 20:45:25 JST 2013
Fri Dec 27 20:45:26 JST 2013
Fri Dec 27 20:45:27 JST 2013
Fri Dec 27 20:45:28 JST 2013
Fri Dec 27 20:45:29 JST 2013
Fri Dec 27 20:45:30 JST 2013
Fri Dec 27 20:45:31 JST 2013
Fri Dec 27 20:45:32 JST 2013
Fri Dec 27 20:45:33 JST 2013
Fri Dec 27 20:45:34 JST 2013
Fri Dec 27 20:45:35 JST 2013
Fri Dec 27 20:45:36 JST 2013
Fri Dec 27 20:45:37 JST 2013
Fri Dec 27 20:45:38 JST 2013
Fri Dec 27 20:45:39 JST 2013
Fri Dec 27 20:45:40 JST 2013
Fri Dec 27 20:45:41 JST 2013
Fri Dec 27 20:45:42 JST 2013
Fri Dec 27 20:45:43 JST 2013
Fri Dec 27 20:45:44 JST 2013
Fri Dec 27 20:45:45 JST 2013
Fri Dec 27 20:45:46 JST 2013
Fri Dec 27 20:45:47 JST 2013
Fri Dec 27 20:45:48 JST 2013
Fri Dec 27 20:45:49 JST 2013
Fri Dec 27 20:45:50 JST 2013
Fri Dec 27 20:45:51 JST 2013
Fri Dec 27 20:45:52 JST 2013
Fri Dec 27 20:45:53 JST 2013
Fri Dec 27 20:45:54 JST 2013
Fri Dec 27 20:45:55 JST 2013
Fri Dec 27 20:45:56 JST 2013
Fri Dec 27 20:45:57 JST 2013
Fri Dec 27 20:45:58 JST 2013
Fri Dec 27 20:45:59 JST 2013
Fri Dec 27 20:46:00 JST 2013
Fri Dec 27 20:46:01 JST 2013
Fri Dec 27 20:46:02 JST 2013
Fri Dec 27 20:46:03 JST 2013
Fri Dec 27 20:46:04 JST 2013
Fri Dec 27 20:46:05 JST 2013
・・・・
これで1秒間隔で実行されました。
普通はスクリプト内で秒間隔で実行する処理を書くと思いますが、cronだけでがんばるにはこんなやり方もできるようです。