Cron-Job-Dateien in Fedora
Dieses Dokument beschreibt die Richtlinien für das Paketieren von Cron-Job-Dateien in Fedora.
Im Sinne dieser Richtlinien wird eine Cron-Job-Datei als Skript (z. B. ein Shell-Skript oder ein Perl-Skript) definiert. Diese Cron-Job-Dateien werden so geplant, dass sie in regelmäßigen Abständen von einem Cron-Daemon ausgeführt werden.
Cron-Job-Dateien im Dateisystem
Pakete mit Cron-Job-Dateien müssen diese je nach gewünschtem Ausführungsintervall in einem oder mehreren der folgenden Verzeichnisse ablegen: /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly.
Eine Ausnahme von dieser Regel besteht: Soll ein bestimmter Cron-Job in einer anderen Häufigkeit oder zu einem anderen Zeitintervall als oben angegeben ausgeführt werden, muss eine benutzerdefinierte Crontab-Datei (mit den Berechtigungen 0640) in /etc/cron.d erstellt werden. In diesem Fall muss die Cron-Job-Datei (das Skript) an einem geeigneten Systemort (z.B. %{_bindir}, %{_libexecdir}) und NICHT in /etc/cron.d abgelegt werden.
Sowohl Cron-Job-Dateien als auch Crontab-Definitionsdateien, die in einem dieser Verzeichnisse installiert sind, müssen als Konfigurationsdateien behandelt werden, damit sie vom lokalen Systemadministrator leicht geändert werden können.
Cron-Job-Datei
Eine typische Cron-Job-Datei ist ein Skript wie das Folgende:
#!/bin/sh # Mein Cron-Job-Skript # set -x echo "Dies ist mein einfaches Cron-Job-Skript" exit 0
Beispiel einer Crontab-Definition, die alle zwei Stunden ausgeführt wird, wie in /etc/cron.d/example angegeben
# .---------------- Minute (0 - 59) # | .------------- Stunde (0 - 23) # | | .---------- Tag des Monats (1 - 31) # | | | .------- Monat (1 - 12) ODER jan,feb,mar,apr ... # | | | | .---- Wochentag (0 - 6) (Sonntag=0 oder 7) ODER sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * Benutzername auszuführender-Befehl 0 */2 * * * root /usr/bin/example
Dateinamen für Cron-Jobs
Der Dateiname einer Cron-Job-Datei sollte mit dem Namen des Pakets übereinstimmen, aus dem sie stammt.
Wenn ein Paket mehrere Cron-Job-Dateien im selben Verzeichnis bereitstellt, sollten die Dateinamen alle mit dem Namen des Pakets beginnen, gefolgt von einem Bindestrich (-) und einem passenden Suffix.
Paketierung von Cron-Job-Dateien
Die Cron-Job-Dateien in den Paketen müssen als %config(noreplace) gekennzeichnet sein, und ihre Dateinamen sollten mit dem Namen des Pakets übereinstimmen.
Hilfsdateien, die von Cron-Jobdateien verwendet werden, sollten an geeigneten Systemorten (z. B. %{_bindir} oder %{_libexecdir}) abgelegt werden und müssen nicht als %config gekennzeichnet werden.
Pakete mit Cronjob-Dateien müssen explizit Requires: crontabs enthalten. Da crontabs das Verzeichnis /etc/cron.d benötigt und alle Cron-Daemon-Pakete dieses Verzeichnis erstellen (und besitzen), dient crontabs als virtuelle Abhängigkeit für die Cron-Daemon-Funktionalität.
Beispiel für die Paketierung von Cron-Jobs
Name:
...
Source1: %{name}.cron
Requires: crontabs
...
%install
...
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/cron.monthly
%{__install} -p -D -m 0750 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/cron.monthly/%{name}
%files
%config(noreplace) %{_sysconfdir}/cron.monthly/%{name}
Want to help? Learn how to contribute to Fedora Docs ›