Warum werden Crontabs nicht in Benutzerverzeichnissen gespeichert?


35

Ich bin gespannt, warum Crontabs in / var und nicht in den Home-Verzeichnissen des Benutzers gespeichert werden. Das Isolieren dieser Dateien für Upgrades macht es zu einem echten Problem, aber ich vermute, dass es einen logischen Grund gibt ...

Antworten:


41

Einige Gründe, die mir einfallen:

  • In Unternehmensumgebungen können Sie Tausende von Benutzern haben. In diesem Fall müsste cron jede Minute das Verzeichnis jedes einzelnen Benutzers durchsuchen, um nach der crontab-Datei zu suchen (ob sie erstellt, gelöscht oder geändert wurde).
    Indem sie an einem einzigen Ort aufbewahrt werden, muss dieser intensive Scan nicht durchgeführt werden.
  • Basisverzeichnisse sind möglicherweise nicht immer verfügbar. Wenn es sich bei den Basisverzeichnissen um ein autofs-Mount handelt, werden sie möglicherweise nicht gemountet. Wenn sie jede Minute von cron überprüft werden, werden sie gemountet und können aufgrund von Inaktivität nicht ausgemountet werden. Auch wenn das Ausgangsverzeichnis mit dem Kennwort des Benutzers verschlüsselt und entschlüsselt wird, kann cron nicht zum Ausgangsverzeichnis gelangen, es sei denn, der Benutzer hat sich angemeldet und es entschlüsselt / bereitgestellt.
  • Basisverzeichnisse können von mehreren Hosts gemeinsam genutzt werden. Wenn es sich bei dem Basisverzeichnis um eine Netzwerkfreigabe handelt, wird dasselbe Basisverzeichnis auf mehreren Hosts angezeigt. Sie möchten jedoch möglicherweise nicht, dass Ihre Cron-Jobs auf jedem einzelnen Host ausgeführt werden, nur auf einem von ihnen.

1
+1 Obwohl crondiese Dateien traditionell nicht jede Minute erneut gescannt wurden; es lud sie einmal und las sie nur auf einem Signal erneut.
Goldlöckchen

7
Aber Sie haben Recht mit Punkt 3; Laut Wikipedia befanden sich Crontabs ursprünglich in $ HOME, bis "[Bell Lab Devs] den Befehl Unix at in cron einbaute, die Crontab-Dateien aus den Home-Verzeichnissen der Benutzer (die nicht hostspezifisch waren ) in ein gemeinsames hostspezifisches Verzeichnis verschob Spool - Verzeichnis ... "Dies war auch der Zeitpunkt, an dem der crontabBefehl erstellt wurde, der möglicherweise das Problem des erneuten Ladens behoben hat.
Goldlöckchen

2
@Patrick Oder wenn ein Programm den utimesSystemaufruf mit dem Spool-Verzeichnispfad als Argument verwendet, um die M-Zeit des Verzeichnisses festzulegen, wie es der crontabBefehl von Vixie cron tut.
Mark Plotnick

2
In früheren Versionen von cron wurden Änderungen an Benutzer-crontab-Dateien nur übernommen, wenn sie über crontab -e bearbeitet wurden. Ich habe durch diese in der Vergangenheit unter Solaris finden Sie in diesem Jahrzehnte alten Mann Seite ertappt manpages.info/sunos/cron.1.html

2
Unter Solaris 10 crontab -e(setuid root) wird eine Nachricht geschrieben, /etc/cron.d/FIFOnachdem ein Benutzer eine Crontab bearbeitet hat.
Mark Plotnick
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.