Soll ich cron.hourly oder crontab verwenden?

9

Es scheint, dass alle Vorschläge für die Verwendung / Planung von awstats über crontab erfolgen: 0 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mysite -update >/dev/null(awstats stündlich ausführen).

Wenn ich dies überprüfe crontab -l, wird jedoch angezeigt, dass crontab für meinen Benutzer leer ist.

Wenn ich das überprüfe /etc/cron.hourly, habe ich jedoch eine awstats-Datei mit den folgenden Angaben:

#!/bin/bash
exec /usr/share/awstats/tools/awstats_updateall.pl now         -configdir="/etc/awstats"           -awstatsprog="/usr/share/awstats/wwwroot/cgi-bin/awstats.pl" >/dev/null
exit 0

Nur um Sie wissen zu lassen, meine awstats werden gut aktualisiert, sie erstellen ihre Berichte und alles ist gut.

Erstellt das Ausführen eines Befehls crontab einen Eintrag im angegebenen Ordner cron? (dh cron.hourly oder cron.daily usw.)? Oder haben sie nichts miteinander zu tun? Wenn sie verwandt sind, warum ist mein Benutzer ohne Crontab-Eintrag?

kohlensäurehaltiges Getränk
quelle

Antworten:

13

crontab -eist die traditionelle Art, eine Crontab zu erstellen. Ich finde es umständlich und altmodisch, aber die Leute benutzen es immer noch.

/etc/cron.hourly, einschließlich cron.daily, cron.weekly& /etc/cron.dusw. werden von den meisten Linux-Distributionen bereitgestellt, da sie praktisch sind und gut mit Automatisierungstools wie Paketmanagern und Konfigurationsmanagementsystemen zusammenarbeiten. Für einen Paketmanager ist es sehr einfach, eine Datei abzulegen, im /etc/cron.hourly/fooVergleich zum Skripten und Bearbeiten einer vorhandenen Crontab. Das programmgesteuerte Bearbeiten einer Datei über einen Paketmanager kann die Datei beschädigen , doppelte Einträge hinzufügen, die falsche Zeile löschen, Kommentare vermasseln usw. Weitere Informationen finden Sie unter Bearbeiten von Dateien, die als schädlich eingestuft werden , da dieses Problem bereits seit einiger Zeit besteht.

Erstellt das Ausführen eines Befehls crontab einen Eintrag im angegebenen Ordner cron?

Nr. /etc/cron.daily/fooWird vom Paketmanager erstellt oder von Hand erstellt. Es wird nicht erstellt, wenn Sie den Befehl crontab ausführen. crontab -ewird die crontab unter erstellen /var, wie z /var/spool/cron/root.

Ich bevorzuge /etc/cron.$period/foound /etc/cron.dweil diese Hierarchie ordentlich und organisiert ist und es einfach ist, Skripte für mein Konfigurationsmanagementsystem zu erstellen. /etc/crontabist auch unter Linux verfügbar, aber es ist ein bisschen monolithisch und schwer programmgesteuert zu bearbeiten. Systeme wie FreeBSD-Unterstützung /etc/crontabund /etc/periodic.

Stefan Lasiewski
quelle
1
Vielen Dank für Ihre Antwort, ich bevorzuge es auch, da ich es gewohnt bin, Konfigurationsdateien in .d-Ordnern (dh conf.d usw.) abzulegen!
kohlensäurehaltiges Getränk
Dem kann ich nur zustimmen. Ich bevorzuge es auch, die Systeme zu verwenden, /etc/crontabwenn es darum geht, System-Takes auszuführen, anstatt die Crontab von root zu verwenden. Auf diese Weise kann man leicht erkennen, was das System vorhat, ohne in die Crontab jedes Benutzers zu graben.
Spack
1
Ich stimme dieser Antwort zu. Erwähnen Sie möglicherweise einige andere Unterschiede: /etc/cron.$period/ enthält autarke Skripte, die vom Benutzer root ausgeführt werden. OTOH /etc/cron.d/ enthält Include-Dateien im crontab -eFormat. Schließlich soll / etc / cron * Skripte als Root ausführen, während crontab -ees allen Benutzern zur Verfügung steht.
Nils Toedtmann
Der crontab -eBefehl ist standardmäßig umständlich. Also habe ich ein Skript namens erstellt, ctedas zwei Befehle ausführt: export EDITOR=geditund dann crontab -eist es einfacher, mit dem Editor zu arbeiten.
SDsolar