循環引数を使用して cron ジョブを実行するにはどうすればよいですか?

循環引数を使用して cron ジョブを実行するにはどうすればよいですか?

サイクルに応じて事前定義された引数を使用して、たとえば 5 分ごとに bash スクリプトを実行したいと考えています。

たとえば、引数として 1、2、5、10、15、50、15、10、5、2 を使用し、サイクルを再度開始します。

理想的には、引数はファイルまたはスクリプトに保存され、簡単に編集したり、追加や削除などを行うことができます。

それ、どうやったら出来るの ?


単一のスクリプト、配列、および で実行できますwhile [[ true ]]が、cron でも実行できるかどうかを知りたいです。

答え1

おそらく、これを実現する最も効果的で簡単な方法の 1 つは、引数を使用するのではなく、スクリプトでマジック ナンバーの循環を追跡することです。次のようになります。

#!/bin/bash
sequence=(1 2 5 10 15 50 15 10 5 2)
if [[ -r /var/tmp/myjob.seq ]]; then
   seq="$(cat /var/tmp/myjob.seq)"
   if [[ $seq -lt $((${#sequence[@]}-1)) ]]; then
       nextseq=$(($seq+1))
   else
       nextseq=0
   fi
   echo $nextseq > /var/tmp/myjob.seq
else
   seq=0
   echo 1 > /var/tmp/myjob.seq
fi
magicnumber=${sequence[$seq]}

その後、スクリプト内で後から参照し$magicnumber、任意の cron スケジュールを使用できます。

関連情報