数秒ごとにcronを実行する方法

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

crontabで数秒ごとにコマンドを定期実行する

crontabを利用していると1分よりも短い間隔でスクリプトを実行したいときがあります。crontab自体には1分未満の実行を指定することができないため、コマンドで数秒ごとに定期実行する方法を確認しましょう。

 

実装方法

seqコマンドとsleepコマンドを利用して実装します。一分ごとのスクリプトの実行時に間隔ごとにsleepコマンドで処理を待たせてから随時コマンドを実行します。

for i in `seq 0 [実行したい間隔(秒数)] 59`;do (sleep ${i}; [実行したいスクリプト]) & done;

 

10秒ごとにスクリプトを実行するサンプル

10秒ごとにスクリプトを実行したときのサンプルを記述します。

* * * * * for i in `seq 0 10 59`;do (sleep ${i}; /home/hogehoge/src/test.sh;) & done;

psコマンドで内部のプロセスを表示すると、スリープ中のプロセスが確認できます。

root@localhost:# ps aux
(省略)
hogehoge 20595  0.0  0.0   4440   104 ?        S    18:35   0:00 /bin/sh -c for i in `seq 0 10 59`;do (sleep ${i}; /home/hogehoge/src/test.sh;) & done;
hogehoge 20596  0.0  0.0   4440   104 ?        S    18:35   0:00 /bin/sh -c for i in `seq 0 10 59`;do (sleep ${i}; /home/hogehoge/src/test.sh;) & done;
hogehoge 20597  0.0  0.0   4440   104 ?        S    18:35   0:00 /bin/sh -c for i in `seq 0 10 59`;do (sleep ${i}; /home/hogehoge/src/test.sh;) & done;
hogehoge 20598  0.0  0.0   4440   104 ?        S    18:35   0:00 /bin/sh -c for i in `seq 0 10 59`;do (sleep ${i}; /home/hogehoge/src/test.sh;) & done;
hogehoge 20599  0.0  0.0   4440   104 ?        S    18:35   0:00 /bin/sh -c for i in `seq 0 10 59`;do (sleep ${i}; /home/hogehoge/src/test.sh;) & done;
(省略)