cron verstehen

08/05/2008 - 03:08 von Christian Buhtz | Report spam
Ich habe bereits die manpages zu cron und crontab gelesen. Soweit
verstehe ich wie cron bedient wird.

Allerdings verstehe ich nicht warum(!) cron so bedient wird.
Also ich versuche cron zu verstehen und welche Designentscheidungen bzw
Konzepte dahinterstehen.

Mein größtes Unverstàndnis besteht darin, dass die jeweiligen
crontab-files mit bzw über die Anwendung crontab editiert werden müssen,
anstatt einfach die crontab-files direkt mit einem editor (vi, emacs,
etc) zu editieren.
Warum ist das so? Welches Prinzip steckt dahinter?

Warum gibt es crontab-files in /var/spool/* ? Was hat dieser Teil des
Verzeichnisbaums damit zu tun? Die crontab-files könnten doch auch
einfach in /etc/usr/* lieben.

Was verbirgt sich hinter /etc/cron.d/daily usw? Warum gibt es hierfür
nochmal extra Verzeichnisse. Würden sich die dortigen Scripts nicht auch
direkt in ein crontab-file eintragen lassen?
 

Lesen sie die antworten

#1 Bernd Eckenfels
08/05/2008 - 03:54 | Warnen spam
Christian Buhtz wrote:
Mein größtes Unverstàndnis besteht darin, dass die jeweiligen
crontab-files mit bzw über die Anwendung crontab editiert werden müssen,
anstatt einfach die crontab-files direkt mit einem editor (vi, emacs,
etc) zu editieren.
Warum ist das so? Welches Prinzip steckt dahinter?



Das Systemweite cron file wird tatsàchlich direkt überwacht. Das Konzept das
File per command zu editieren hat mehrere Gründe:

a) Das File muss nicht überwacht werden sondern der reload kann nach dem exit des editors aufgerufen werden
b) man kann ein syntaxcheck durchführen bevor das file akzeptiert wird
c) manche crons legen die files mit bestimmten Zugriffsrechten ab, das liegt unter anderem an dem Problem eines zentralen Verzeichnisses (was natuerlich doof ist)
d) locking

Warum gibt es crontab-files in /var/spool/* ? Was hat dieser Teil des
Verzeichnisbaums damit zu tun? Die crontab-files könnten doch auch
einfach in /etc/usr/* lieben.



Das ist mehr oder weniger histerisch :)

Was verbirgt sich hinter /etc/cron.d/daily usw? Warum gibt es hierfür
nochmal extra Verzeichnisse. Würden sich die dortigen Scripts nicht auch
direkt in ein crontab-file eintragen lassen?



Das ist ein Zugestaendnis an die Package Manager der Neuzeit. Ein Paket das
einen Aufraeumjob hat muss nicht mehr crontab Files "automatisch" editieren (und
dabei noch sinnvolle Uhrzeiten finden), sondern er legt einfach ein Script
mit dem paketname in das Dir (oder löscht es beim uninstall).

Das klappt dann auch wenn nicht zu festen Zeiten ausgeführt wird sondern mit
einer unschaerfe die Systeme abdeckt die nicht immer an sind (z.b. anacron).
Die Einstellung wann das Daily Maintenance Window ist muss der Package
Ersteller garnicht treffen/wissen.

Ausserdem kann dann der Job Executor die max. Parallelitàt selbst wàhlen.
(i.A. =1)

Gruss
Bernd

Ähnliche fragen