{"data":{"external_id":2751,"slug":"wiederkehrende-tasks-mit-cron-jobs-linux","title":"Wiederkehrende Tasks in Linux mit Cron Jobs ausf\u00fchren","content":"In Linux-Systemen ist der Cron-Daemon ein n\u00fctzliches Werkzeug, um wiederkehrende Tasks oder Befehle automatisch zu bestimmten Zeiten auszuf\u00fchren. Dies ist besonders praktisch, wenn Du regelm\u00e4\u00dfig wiederkehrende Befehle oder Skripte ausf\u00fchren m\u00f6chtest, ohne dass Du manuell eingreifen musst. Eine M\u00f6glichkeit, Cron-Jobs zu definieren, ist durch das Anlegen von Dateien im Verzeichnis \/etc\/cron.d.\nWarum \/etc\/cron.d?\nDas Verzeichnis \/etc\/cron.d bietet eine einfache M\u00f6glichkeit, systemweite Cron-Jobs zu definieren, die unabh\u00e4ngig vom Benutzerkonto laufen. W\u00e4hrend Cron-Jobs normalerweise \u00fcber den Befehl crontab -e f\u00fcr jeden Benutzer individuell eingerichtet werden, kannst Du mit \/etc\/cron.d systemweite Jobs verwalten und dabei f\u00fcr jeden Job eine eigene Datei anlegen.\nAufbau einer Datei in \/etc\/cron.d\nEine Datei in \/etc\/cron.d hat ein spezielles Format. Jede Zeile definiert einen Job und besteht aus den folgenden Teilen:\nZeitplan \u2013 wann der Job ausgef\u00fchrt werden soll.\nBenutzer \u2013 als welcher Benutzer der Befehl ausgef\u00fchrt wird.\nBefehl \u2013 der auszuf\u00fchrende Befehl oder das Skript.\nDer allgemeine Aufbau sieht so aus:\n* * * * * Benutzer Befehl\nDie Sterne repr\u00e4sentieren die Zeitfelder, die wie folgt definiert sind:\n*    *    *    *    *  Benutzer   Befehl-    -    -    -    -|    |    |    |    ||    |    |    |    +----- Wochentag (0 - 7) (Sonntag ist 0 oder 7)|    |    |    +---------- Monat (1 - 12)|    |    +--------------- Tag (1 - 31)|    +-------------------- Stunde (0 - 23)+------------------------- Minute (0 - 59)\nBeispiel: T\u00e4gliches Backup um 3:00 Uhr\nStellen wir uns vor, Du m\u00f6chtest ein t\u00e4gliches lokales Backup Deiner Datenbank um 3:00 Uhr morgens durchf\u00fchren. Daf\u00fcr k\u00f6nntest Du eine Datei namens backup in \/etc\/cron.d anlegen und den folgenden Inhalt hinzuf\u00fcgen:\n0 3 * * * root \/usr\/local\/bin\/backup.sh\nDieser Cron-Job wird jeden Tag um 3:00 Uhr morgens als Benutzer root ausgef\u00fchrt und startet das Skript \/usr\/local\/bin\/backup.sh. Der Benutzer wird hier explizit definiert, da systemweite Cron-Jobs immer einen Benutzer erfordern.\nBeispiel: Einen Job jeden Montag um 12:00 Uhr ausf\u00fchren\nAngenommen, Du m\u00f6chtest ein Skript, das Logs bereinigt, jeden Montag um 12:00 Uhr ausf\u00fchren. Dazu erstellst Du eine neue Datei im \/etc\/cron.d-Verzeichnis, zum Beispiel log_cleanup, und f\u00fcgst den folgenden Code ein:\n0 12 * * 1 root \/usr\/local\/bin\/log_cleanup.sh\nDieser Job wird jeden Montag (1 steht f\u00fcr Montag) um genau 12:00 Uhr ausgef\u00fchrt.\nTipps f\u00fcr die Verwendung von \/etc\/cron.d\nLog-Ausgabe \u00fcberwachen:Cron-Jobs haben standardm\u00e4\u00dfig keine sichtbare Ausgabe. Um sicherzustellen, dass Du Fehler oder Erfolge nachvollziehen kannst, leite die Ausgabe der Befehle in Log-Dateien um: \n0 12 * * 1 root \/usr\/local\/bin\/log_cleanup.sh >> \/var\/log\/cron.log 2>&amp;1\nDieser Befehl speichert sowohl die normale Ausgabe (stdout) als auch die Fehlermeldungen (stderr) in die Datei \/var\/log\/cron.log.\nUmgebungsvariablen setzen:Cron-Jobs verwenden eine minimale Umgebung. Wenn Dein Skript bestimmte Umgebungsvariablen ben\u00f6tigt, kannst Du diese entweder im Skript selbst oder direkt in der Cron-Datei definieren:\nSHELL=\/bin\/bash PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/sbin:\/bin:\/usr\/sbin:\/usr\/bin 0 12 * * 1 root \/usr\/local\/bin\/log_cleanup.sh\nRechte \u00fcberpr\u00fcfen:Stelle sicher, dass die Dateien in \/etc\/cron.d die richtigen Berechtigungen haben. Sie sollten \u00fcblicherweise mit root-Rechten erstellt und nur von root oder privilegierten Benutzern bearbeitet werden. Dies kannst Du mit chmod 644 \/etc\/cron.d\/filename sicherstellen.\nBeispiel f\u00fcr eine vollst\u00e4ndige Cron-Datei\nNehmen wir an, Du m\u00f6chtest mehrere Jobs in einer Datei kombinieren. Hier ein Beispiel f\u00fcr eine Datei \/etc\/cron.d\/multiple_jobs, die verschiedene Tasks f\u00fcr unterschiedliche Zeiten plant:\n# UmgebungsvariablenSHELL=\/bin\/bashPATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/sbin:\/bin:\/usr\/sbin:\/usr\/bin# Job 1: T\u00e4gliches Backup um 2:00 Uhr0 2 * * * root \/usr\/local\/bin\/backup.sh# Job 2: Logs bereinigen jeden Montag um 12:00 Uhr0 12 * * 1 root \/usr\/local\/bin\/log_cleanup.sh# Job 3: Wartungsskript jeden Sonntag um 5:00 Uhr0 5 * * 0 root \/usr\/local\/bin\/maintenance.sh >> \/var\/log\/maintenance.log 2>&amp;1\nHilfe bei Einrichtung von Cronjobs ben\u00f6tigt?\nDu hast mehrere M\u00f6glichkeiten, dir helfen zu lassen. Zum einen steht Dir als PPH Pro Kunde im Webinterface ein Cronjob-Manager zur Verf\u00fcgung. Du kannst hier Cronjobs verwalten, einstellen, aktivieren und deaktivieren oder entfernen.\nSolltest du kein PPH Pro Kunde sein, kannst Du dich gerne bei uns im Support melden. Wir helfen Dir dann weiter!","schema":null,"facts":[],"links":[]}}