====== Cronjob ======
[[wpde>Cronjob]]s sind wiederkehrende Aufgaben, die das System zu einer angegebenen Zeit ausführt. Dafür ist der Cron-Dienst (Daemon) zuständig. Im Fenster-OS wird so etwas geplante Tasks genannt.
Auf allen aktuellen Systemen gibt es zusätzlich systemd-timer: ''systemctl list-timers''
Die anzeigten timer sind Dateien deren symbolische Links im Verzeichnis ''/etc/systemd/system/timers.target.wants/'' liegen.
- Die auszuführenden Befehle werden in einer //benutzereigenen// Tabelle, der sogenannten **crontab**, gespeichert (bearbeiten mit ''crontab -e'').
- //Systemweit// befinden sich unter anderem bereits vorgegebene Verzeichnisse: in ''/etc'' mit Namen wie
* ''/etc/cron.daily''
* ''/etc/cron.hourly''
* ''/etc/cron.mouthly''
* ''/etc/cron.weekly'' \\ die einen Eintrag in die benutzereigene Crontab überflüssig machen können und eher von System-programmen benutzt werden, da diese aus Übersichtlichkeitsgründen nicht alle eigene User und eigene Crontabs anlegen.
- //Systemweit// gilt auch die Datei ''/etc/crontab''. Hier ist zu beachten, dass bei vielen Distributionen keine Pfade angegeben werden. Es müsste eine Zeile PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin über den ersten Aufrufen stehen.
- Die **crontabs der Benutzer** liegen in Einzeldateien (Dateiname = Benutzername) unter **/var/spool/cron/crontabs** .
===== Cronjobs einrichten =====
Entweder Verweise ([[wpde>Symbolischer_Link|Symlinks]]) in den oben genannten Verzeichnisse anlegen oder mit dem Befehl ''crontab -e -u [user]'' (wobei die Userangabe nicht verpflichtend ist).
Dann kann man Einträge in der folgenden Form anlegen:
# m h dom mon dow command
5 1 * * * Befehl
die einzelnen Zahlen stehen dabei für folgende Angaben (von vorne nach hinten):
- Minute (0 - 59)
- Stunde (0 - 23)
- Tag (1 - 31)
- Monat (1 - 12)
- Wochentag (0 - 7) (Sonntag =0 oder =7)
- Befehl: der (absolute) Pfad zum auszuführenden [[shellscripts:shellscripts|Shellscript]].
Im Beispiel wird also MeinBefehl um 1:05 an jedem Tag, Monat und Wochentag ausgeführt.
Die Ausführung des Cronjobs wird protokolliert und aufgetretene Fehler werden dem ServerAdmin per mail zugestellt.
==== Beispiele (/etc/crontab)====
Format:
# m h dom mon dow user command
#Jedes Jahr am Samstag, den 02.09. um 13:50 Uhr:
50 13 2 9 6 root /Pfad-zum/Script.sh
#Jeden zweiten im Monat um 13:50 Uhr:
50 13 2 * * root /Pfad-zum/Script.sh
#Jeden Samstag um 13:50 Uhr:
50 13 * * 6 root /Pfad-zum/Script.sh
#Jeden Freitag, Samstag und Sonntag um 13:50 Uhr
#und um 14:50 Uhr:
50 13,14 * * 5,6,7 root /Pfad-zum/Script.sh
#Jeden Samstag im Zehnminutentakt:
*/10 * * * 6 root /Pfad-zum/Script.sh
# alle 3 Stunden:
* */3 * * * root /Pfad-zum/Script.sh
===== Cronjob-dienste im Internet =====
Wenn man selbst keinen Server besitzt bzw. administriert und auch keinen Rechner 24h am Tag angeschaltet hat, kann man auch einen der zahlreichen Dienste benutzen.
Hier nur eine kleine Auswahl:
[[http://www.cronjob.de/|cronjob.de]]
[[http://my-cronjob.de/|my-cronjob.de]]
[[http://www.cron-job.org/cgi-bin/cronweb|cron-job.org]]
===== Cron nur für bestimmte Benutzer =====
In manchen Umgebungen (Sicherheit!) soll Cron nur für bestimmte Benutzer ausführbar sein. Dies lässt sich durch die Datei ''/etc/cron.allow'' realisieren. Dort trägt man die Benutzer (root, ...) ein denen cron erlaubt sein soll. Oft wird dies jedoch auch über die Mitgliedschaft in einer Gruppe geregelt.
Der umgekehrte Weg (manche Benutzer von Cron ausschließen) funktioniert mit ''/etc/cron.deny''.