
Ich weiß ziemlich gut, wie Cron/Anacron unter Linux funktionieren. Meine Frage ist folgende:
/etc/cron.daily
anacron wird beim Login ausgeführt und prüft, ob seit der Ausführung der Skripte mehr als ein Tag vergangen ist- anacron führt Skripte in aus
/etc/cron.daily
und aktualisiert den Zeitstempel in/var/spool/anacron/cron.daily
- Anacron beendet
- Computer bleibt länger als 24 Stunden eingeschaltet
- cron wird ausgeführt und erkennt eine Zeitübereinstimmung für cron.daily
- cron tut nichts, da
test -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.daily
Ordner, 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.d
Ordner, 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.daily
Abstand 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.daily
ist älter als 23.05.2021, führt Anacron alle Skripte aus/etc/cron.daily
und 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.daily
ist älter als 23.05.2021, führt Anacron alle Skripte aus/etc/cron.daily
und 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.weekly
usw. enthalten einen Eintrag zum Ausführenanakrondie wiederum einen Eintrag zum Ausführen enthältcron. /etc/crontab
enthält Einträge fürLaufteileso dassanakronwird entweder betrieben vonLaufteileoder voncron.
Eine weitere zu berücksichtigende Datei ist die /etc/anacrontab
Datei, die einige der Effekte von/etc/crontab
Ein wichtiges SystemcronDie zugehörige Datei ist /etc/cron.daily/logrotate
ein Skript, mit dem die Protokollrotationsverarbeitung initiiert wird.
Normaler Benutzercrontabswerden unabhängig von System-Cronjobs ausgeführt.
Beachten Sie, dass /etc/crontab
es nicht jede Minute ausgeführt wird – die Aktivität wird durch die verschiedenen Crontab-Spezifikationen bestimmt.