Es ist eine kleine Geschichte.
In Bash können Sie mithilfe der Umgebungsvariablen "$ RANDOM" zufällig Zahlen von 0 bis 32767 abrufen.
Um beispielsweise Zahlen von 0 bis 3 zufällig anzuzeigen, kombinieren Sie die restlichen Operatorsymbole "%" wie folgt.
Zeigen Sie zufällig Zahlen von 0 bis 3 an
echo $((RANDOM % 4))
Dies ist die Zahl von 5 bis 59.
Zeigen Sie zufällig Zahlen von 5 bis 59 an
echo $((5 + RANDOM % 55))
Die Erklärung dieses Bereichs war in [Zufällig mit Shell-Skript] viel einfacher zu verstehen.
Das Hauptthema. Angenommen, der folgende Cron ist in der letzten Zeile definiert.
00 2 * * * /home/mindwood/foo.sh > /dev/null 2>&1
Es soll um 2:00 Uhr beginnen, aber ich möchte dies so einstellen, dass es von 0:05 bis 3:59 Uhr beginnt und ihm einen Bereich gibt. Darüber hinaus möchte ich nur jede Stunde (1 Uhr morgens, 2 Uhr morgens ...) vermeiden.
Hier ist der eine Liner zum Umschreiben.
H=$((RANDOM%4));M=$((5+RANDOM%55));sed -i -e '$s/^[0-9]\+ [0-9]\+/'$M' '$H'/' /var/spool/cron/crontabs/root
Beispielsweise wird es wie folgt aktualisiert.
43 1 * * * /home/mindwood/foo.sh > /dev/null 2>&1
Wenn Ihnen diese Zeit nicht gefällt, können Sie von vorne beginnen.
Das $
von sed
repräsentiert die letzte Zeile.
Weitere Informationen zu sed
finden Sie unter [Wie schreibe ich in diesem Fall mit sed?].
Recommended Posts