
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 $magicnumber
später im Skript darauf verweisen und jeden beliebigen Cron-Zeitplan verwenden.