この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
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;
(省略)

