hello-world
webエンジニアのメモ。とりあえずやってみる。

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

参考


Related #cron

[linux]月末にcronを実行する

月末にcronを実行したいと思いcrontabに設定を書こうとしたところ、月初のように単純には書けないことに気づきました。

wheneverの設定をcronに反映するコマンドメモ

Rubyでcronのバッチを作成したい場合に whenever をよく使うのですが、cron反映コマンドを毎回忘れて調べているので書き留めておきます。

cronでrbenvのrubyを実行する

cronのバッチ経由でrubyスクリプトを実行しようとしたところ、rbenvでインストールしたrubyだったためうまくバッチが実行できない現象に遭遇しました。

[apache]cronで指定時刻になったら.htaccessのbasic認証を解除する

cronを使って指定時間になったらbasic認証を解除したいと思い調べてやってみました。