Wie führe ich einen Cron-Job mit zyklischen Argumenten aus?

Wie führe ich einen Cron-Job mit zyklischen Argumenten aus?

Ich möchte beispielsweise alle 5 Minuten ein Bash-Skript mit einem vordefinierten Argument gemäß einem Zyklus ausführen.

Beispielsweise möchte ich als Argument 1, 2, 5, 10, 15, 50, 15, 10, 5, 2 verwenden und dann den Zyklus erneut starten.

Idealerweise werden die Argumente in einer Datei oder im Skript gespeichert, wo ich sie einfach bearbeiten, einige hinzufügen oder entfernen usw. kann.

Wie mache ich das ?


Ich könnte es mit einem einzelnen Skript, einem Array und einem machen, while [[ true ]]aber ich würde gerne wissen, ob ich das mit cron machen kann.

Antwort1

Die wahrscheinlich effektivste und einfachste Möglichkeit, dies zu erreichen, besteht darin, das Skript die Nachverfolgung der magischen Zahl übernehmen zu lassen, anstatt Argumente zu verwenden. Etwa so:

#!/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]}

Sie können dann $magicnumberspäter im Skript darauf verweisen und jeden beliebigen Cron-Zeitplan verwenden.

verwandte Informationen