この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
crontabで数秒ごとにコマンドを定期実行する
crontabを利用していると1分よりも短い間隔でスクリプトを実行したいときがあります。crontab自体には1分未満の実行を指定することができないため、コマンドで数秒ごとに定期実行する方法を確認しましょう。
実装方法
seqコマンドとsleepコマンドを利用して実装します。一分ごとのスクリプトの実行時に間隔ごとにsleepコマンドで処理を待たせてから随時コマンドを実行します。
for i in
seq 0 [実行したい間隔(秒数)] 59
;do (sleep ${i}; [実行したいスクリプト]) & done;
10秒ごとにスクリプトを実行するサンプル
10秒ごとにスクリプトを実行したときのサンプルを記述します。
1 |
* * * * * for i in `seq 0 10 59`;do (sleep ${i}; /home/hogehoge/src/test.sh;) & done; |
psコマンドで内部のプロセスを表示すると、スリープ中のプロセスが確認できます。
1 2 3 4 5 6 7 8 |
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; (省略) |