Wie bestimmt anacron die tägliche, wöchentliche und monatliche Auftragsausführung?

0

Wie bestimmt anacron die tägliche, wöchentliche und monatliche Auftragsausführung?

  1. Zu welcher Zeit des vorherigen Jobs entscheidet anacron, ob der Job erneut ausgeführt werden soll: Startzeit oder Endzeit des vorherigen Jobs? Ist es richtig, dass anacron nur die Endzeit verwendet und cron nur die Startzeit betrifft?
  2. Bedeutet "Täglich" genau 24 Stunden, oder nur verschiedene Kalendertage ermöglichen die Ausführung eines täglichen Auftrags?

    Bedeutet wöchentlich genau 7 Tage, oder kann ein wöchentlicher Auftrag nur in anderen Kalenderwochen ausgeführt werden?

    Bedeutet monatlich genau 30 Tage oder nur verschiedene Kalendermonate, um einen monatlichen Job auszuführen?

    Die Zeitstempeldateien sind nur bis zum Tag genau, also denke ich, ist die Antwort auf die tägliche Frage ein anderer "Kalendertag", nicht 24 Stunden?

    $ sudo cat /var/spool/anacron/cron.daily 
    20181101
    $ sudo cat /var/spool/anacron/cron.weekly 
    20181028
    $ sudo cat /var/spool/anacron/cron.monthly 
    20181011
    

Ein Beispiel. Angenommen, ein täglicher Job wird heute um 4 Uhr morgens ausgeführt, und morgen um 6 Uhr morgens wird anacron nur einmal ausgeführt.

  • Wenn der Job heute um 11:00 Uhr beendet ist, zu welcher Zeit entscheidet anacron, ob der Job ausgeführt wird: Startzeit oder Endzeit?

  • Wenn der Job heute um 5 Uhr morgens beendet ist, wird anacron ihn dann ausführen?

  • Wenn der Job morgen um 3 Uhr morgens beendet ist, wird anacron ihn dann ausführen?

Vielen Dank.

Tim
quelle

Antworten:

3

anacron führt einen Job aus, wenn er in der festgelegten Zeit nicht ausgeführt wurde. Daher wird ein Job, der als alle 7 Tage ausgeführt definiert ist, ausgeführt, wenn er in den letzten 7 Tagen nicht ausgeführt wurde. anacron berechnet dies nur anhand der Kalendertage: Es lädt den Zeitstempel des letzten Laufs, berechnet die aktuelle „Tageszahl“ und subtrahiert die beiden.

  1. anacron aktualisiert Zeitstempel nach der Ausführung von Jobs, sodass das Enddatum als Beginn des Zeitraums verwendet wird, in dem der entsprechende Job nicht erneut ausgeführt werden soll. cron vergleicht nur das aktuelle Datum und die aktuelle Uhrzeit mit einem bestimmten Startspezifizierer, also werden nur die Startzeiten berücksichtigt.

  2. Täglich bedeutet, dass das letzte Mal, an dem ein Job ausgeführt wurde, gestern oder früher sein muss. Wöchentlich bedeutet, dass das letzte Mal, an dem ein Job ausgeführt wurde, vor 7 Tagen oder früher liegen muss. Monthly ist ein bisschen anders; Dies bedeutet, dass das letzte Mal, an dem ein Job ausgeführt wurde, vor n Tagen oder früher liegen muss, wobei n die Anzahl der Tage im Vormonat ist. Bei einer Umgehung entspricht die Anzahl der verstrichenen Tage genau der Anzahl der Tage in der aktuellen Monat.

    Anhand Ihrer Beispiele:

    • Ein täglicher Job, der heute um 11 oder 5 Uhr endet, wird morgen wieder ausgeführt.
    • Ein Job, der morgen um 3 Uhr endet, wird übermorgen wieder ausgeführt.
Stephen Kitt
quelle
Vielen Dank. Ich habe mich gefragt, was Sie unter "Mit Bypass, wenn die Anzahl der verstrichenen Tage genau der Anzahl der Tage im aktuellen Monat entspricht" verstanden haben.
Tim
Wann ist was das entscheidet: die Anzahl der Tage im Vormonat und die Anzahl der Tage im aktuellen Monat?
Tim