秒速でcronを実行する方法


[まとめ] 現在開催中のKindleセール情報はこちら

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だけでがんばるにはこんなやり方もできるようです。

参考

[まとめ] 現在開催中のKindleセール情報はこちら