Warum ist die `cron.hourly`-Zeile in` / etc / crontab` die einzige, die ohne `test -x / usr / sbin / anacron` ist?

548
Jayjayyy

Ich habe meine /etc/crontabnoch nicht geändert . Es ist immer noch der Standardinhalt, der für viele Linux-Distributionen auch der Standardinhalt ist:

# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do.  SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin  # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # 

Warum ist die cron.hourlyLeitung die einzige ohne test -x /usr/sbin/anacron? Warum gibt es nicht auch ein cron.hourlyIn anacrontab?


Aktualisieren:

Wie @ JakeGould kommentierte, die Antwort auf "Was genau macht test -x /usr/sbin/anacrondas?" Sie finden es beispielsweise unter https://unix.stackexchange.com/questions/26088/etc-crontab-what-does-test-x-stand- . Die Hauptfrage bleibt jedoch: Warum unterscheidet sich das Verfahren cron.hourlyvon den anderen Zeilen?

3
`-x` sucht nach ausführbarer Datei. Tomasz vor 5 Jahren 0
Einige [weitere Details hier] (https://unix.stackexchange.com/q/26088/30848). Aber warum "cron.hourly" das nicht braucht, ist eine anständige Frage. JakeGould vor 5 Jahren 1

1 Antwort auf die Frage

4
Austin Hemmelgarn

Da die kleinste Zeit, die Anacron für die Überarbeitung vorgesehen ist, täglich ist, kann sie nicht zur Verwaltung stündlicher Cron-Jobs verwendet werden.

Anacron ist darauf ausgelegt, einen sehr speziellen Anwendungsfall zu behandeln, nämlich sicherzustellen, dass selten ausgeführte Cron-Jobs auf Systemen ausgeführt werden, die nicht immer eingeschaltet sind. Realistisch gesehen gibt es so gut wie nichts, was beides stundenweise ausgeführt werden muss und sofort ausgeführt werden muss, wenn ein Stundenlauf verpasst wurde. In Anbetracht dessen entschieden sich die Entwickler von Anacron dafür, wesentlich einfacheren (und auch zuverlässigeren) Code zuzulassen, der nicht den Zeitpunkt berücksichtigt, zu dem die vorherigen Aufgaben ausgeführt wurden, sondern nur das Datum, an dem sie ausgeführt wurden. Dies bedeutet wiederum, dass Anacron auf Tage, nicht auf Stunden oder Minuten ausgelegt ist, wie dies bei den meisten cron-Implementierungen der Fall ist, und daher nicht für die Bearbeitung stündlicher Jobs verwendet werden kann.

In der Tat macht Anacron auch keine Zeitplanung selbst. Deshalb werden diese Einträge in Ihrem /etc/crontabSystem dort ohne Anacron nicht ausgeführt (oder nur beim Start ausgeführt) läuft auch wenn das System längere Zeit eingeschaltet ist.

Bei stündlichen Jobs im Allgemeinen werden Sie wahrscheinlich /etc/cron.hourlyauf Ihrem System leer sein. Die meisten klassischen Anwendungen (oder noch häufigere Cron-Jobs) waren Fälle, in denen Sie sich vergewisserten, dass etwas auf dem neuesten Stand war, oder den Status einiger Hardware- oder Softwarekomponenten durch Abfragen überprüften. Beide Anwendungsfälle werden durch die Verwendung ereignisgesteuerter Modelle anstelle von Abfragemodellen besser unterstützt und wurden daher im Allgemeinen zu solchen Designs migriert.

Nett. Gute Antwort! JakeGould vor 5 Jahren 0