[LINUX] Ein Liner, der die Startzeit von cron zufällig neu schreibt

Es ist eine kleine Geschichte.

Vorausgesetztes Wissen

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.

Um das Zeitfeld von cron neu zu schreiben

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

Ein Liner, der die Startzeit von cron zufällig neu schreibt
Ein Liner, der Cron für alle Benutzer wunderschön anzeigt
Grep, damit grep zum Zeitpunkt von grep nicht angezeigt wird
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
Verarbeiten Sie das Ergebnis von% time,% timeit
Ein Hinweis zu den Funktionen der Standard-Linux-Bibliothek, die sich mit Zeit befasst
Dies und das der Einschlussnotation.
Python3 + Pyperclip, der den kopierten Text neu schreibt
Stoppen Sie den automatischen Start von Apache Nginx
Ich habe ein Tool erstellt, um die Ausführungszeit von cron zu schätzen (+ PyPI-Debüt)
Vor- und Nachteile von Django, die Menschen mit einjähriger Erfahrung denken
Mit LINEBot habe ich eine Anwendung erstellt, die mich über die "Buszeit" informiert.