cron vs. anacron

cron vs. anacron

Ich weiß ziemlich gut, wie Cron/Anacron unter Linux funktionieren. Meine Frage ist folgende:

  1. /etc/cron.dailyanacron wird beim Login ausgeführt und prüft, ob seit der Ausführung der Skripte mehr als ein Tag vergangen ist
  2. anacron führt Skripte in aus /etc/cron.dailyund aktualisiert den Zeitstempel in/var/spool/anacron/cron.daily
  3. Anacron beendet
  4. Computer bleibt länger als 24 Stunden eingeschaltet
  5. cron wird ausgeführt und erkennt eine Zeitübereinstimmung für cron.daily
  6. cron tut nichts, datest -x anacrontab" == True

Wenn mein Computer länger als 24 Stunden läuft, wie führt Cron die Skripte in cron.daily aus (dies ist eine Debian-basierte Distribution)?

Die Standardeinstellung /etc/crontab(die jede Minute ausgeführt wird) prüft, ob (oder genauer gesagt, das Bit -x) von vorhanden ist /usr/bin/anacron, und ignoriert den /etc/cron.dailyOrdner, wenn er ihn findet, aber Anacron scheint nicht neu gestartet zu werden, um die Arbeit zu erledigen.

BEARBEITEN:

Cron startet also Anacron tatsächlich aus dem /etc/cron.dOrdner, aber nur, wenn der Computer jeden Tag um 7:30 Uhr eingeschaltet und angemeldet ist. Nach ein wenig Tabellenkalkulations-Kung-Fu bin ich zu dem Schluss gekommen, dass die Skripte im /etc/cron.dailyAbstand von 1 Minute bis 31,5 Stunden ausgeführt werden.

Ex:

Szenario 1:

  • einloggen um 23:59 Uhr am 23.05.2021
  • vorausgesetzt, der Anacron-Zeitstempel /etc/cron.dailyist älter als 23.05.2021, führt Anacron alle Skripte aus /etc/cron.dailyund aktualisiert den Zeitstempel auf 23.05.2021
  • Ausloggen
  • Melden Sie sich am 24.05.2021 um 00:00 Uhr erneut an
  • anacron sieht, dass der letzte Lauf am 23.05.2021 war und es jetzt der 24.05.2021 ist, also führt anacron alle Skripte in/etc/cron.daily
  • Verstrichene Zeit zwischen den Läufen: 1 Minute

Szenario 2:

  • Melden Sie sich am 23.05.2021 um 00:00 Uhr an
  • vorausgesetzt, der Anacron-Zeitstempel /etc/cron.dailyist älter als 23.05.2021, führt Anacron alle Skripte aus /etc/cron.dailyund aktualisiert den Zeitstempel auf 23.05.2021
  • Computer bleibt bis zum 23.05.2021 um 07:30 Uhr eingeschaltet und angemeldet
  • cron führt anacron aus seiner crontab-Datei aus in/etc/cron.d
  • da der Zeitstempel 23.05.2021 ist, passiert nichts
  • Computer bleibt bis zum 24.05.2021 um 07:30 Uhr eingeschaltet und angemeldet
  • cron führt anacron aus seiner crontab-Datei aus in/etc/cron.d
  • anacron sieht, dass der letzte Lauf am 23.05.2021 war und es jetzt der 24.05.2021 ist, also führt anacron alle Skripte in/etc/cron.daily
  • Verstrichene Zeit zwischen den Läufen: 31,5 Stunden

Antwort1

Alle Systemdateien /etc/cron.daily, /etc/cron.weeklyusw. enthalten einen Eintrag zum Ausführenanakrondie wiederum einen Eintrag zum Ausführen enthältcron. /etc/crontabenthält Einträge fürLaufteileso dassanakronwird entweder betrieben vonLaufteileoder voncron.

Eine weitere zu berücksichtigende Datei ist die /etc/anacrontabDatei, die einige der Effekte von/etc/crontab

Ein wichtiges SystemcronDie zugehörige Datei ist /etc/cron.daily/logrotateein Skript, mit dem die Protokollrotationsverarbeitung initiiert wird.

Normaler Benutzercrontabswerden unabhängig von System-Cronjobs ausgeführt.

Beachten Sie, dass /etc/crontabes nicht jede Minute ausgeführt wird – die Aktivität wird durch die verschiedenen Crontab-Spezifikationen bestimmt.

verwandte Informationen