30秒ごとにcronジョブを実行したいのですが、cronでは1分に1回以上の頻度でジョブをスケジュールすることはできません。
30秒ごとにcronジョブを実行するための最良の方法はどれですか?
スライディング ウィンドウの問題を回避しながらこれを行う方法を次に示します。メインのスクリプト (ここでは main.sh) とスリープ スクリプト (sleep30.sh) の 2 つのスクリプトを作成します。
main.sh:
#!/bin/bash
date >>/tmp/main.out
sleep30.sh:
#!/bin/bash
sleep 30
. $1
crontab:
* * * * * /pathtoscripts/sleep30.sh /pathtoscripts/main.sh
* * * * * /pathtoscripts/main.sh
エレガントではありませんが、うまくいくはずです。
cron で使用できる最短の時間間隔は 1 分です。bash スクリプトをスリープ状態にすることもできますが、おそらくそれが最善の方法です。
簡単に言えば、1 分未満で cron ジョブをスケジュールすることはできないということです。使用できますsleep 30
が、スライディング ウィンドウの問題が発生します (タスクの間隔は 30 秒 + タスクの実行時間になります)。タスクをwhile true
ループ内に配置し、少なくとも 30 秒が経過した場合は各反復をチェックし、経過した場合はタスクを再度実行し、経過していない場合はタスクを再実行することができます。sleep 1