linux:cronjobs

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:cronjobs [2009/04/22 15:22] stlinux:cronjobs [2023/04/07 10:20] (aktuell) – [Cronjob] st
Zeile 1: Zeile 1:
 +====== 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.
  
 +<box 100% red round left | **systemd timers** >
 +
 +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.
 +</box>
 +
 +  - 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 <file>PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin </file> ü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:
 +<file>
 +# m h dom mon dow command
 +5 1 * * * Befehl
 +</file>
 +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
 +
 +<file>
 +#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
 +</file>
 +
 +===== 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''.