/ / Cron-Konfiguration mit Bash generieren? - Algorithmus, Bash, Cron

Cron-Konfiguration mit Bash generieren? - Algorithmus, Bash, Cron

In meinem Problem werde ich eine Nummer n erhalten. Ich muss eine Cron-Konfiguration erstellen, um ein Skript einmal am Tag auszuführen.

Wenn beispielsweise n = 20 ist, sollte das Skript einmal pro 20 Tage ausgeführt werden.

Irgendein Rat?

Antworten:

2 für die Antwort № 1

Diese Konfiguration wird hässlich sein, wenn nicht sogar unmöglich (Sie müssen jeden Tag aufzählen, der jemals ausgeführt wird ..)

Es ist viel einfacher, eine Konfiguration zu erstellen, so dass sie jeden Tag ausgeführt wird. Dann innerhalb des Skripts (oder in einem Wrapper-Skript) Überprüfen Sie, ob es tatsächlich ausgeführt werden soll.

Diese Überprüfung kann mit durchgeführt werden

  • Rechnen, etwas wie: daycounter=$(( ($(date +%s) / (60*60*24) ) % 20))
  • mit einer Statusdatei, die das Erstellungsdatum hat, das die letzte Ausführungszeit speichert

Die dateibasierte Lösung ist fehlertoleranter,Wenn Ihr Server am Tag des Zeitplans nicht aktiv ist, wird er am nächsten Tag ausgeführt, während die Arithmetik im nächsten Zyklus (20 Tage später) geplant wird.

Wenn Sie die Funktionalität in eine Datei einfügen, sieht Ihr Cron-Eintrag sehr gut aus:

10 1 * * * executeeveryxday nameofthestatefile 20 "command to execute"

Natürlich, wenn Sie mehr Server und Einträge haben und dies von einem zentralen Ort aus verwalten möchten, ist es besser, die Aufgaben aus einer Datenbank zu holen.