Provided by: manpages-de_4.15.0-9_all bug

BEZEICHNUNG

       crontab - Tabellen zum Betrieb von Cron

BESCHREIBUNG

       Eine  crontab-Datei  enthält  Anweisungen  für den Daemon cron(8) in der algemeinen Weise:
       »führe diesen Befehl zu dieser Zeit an diesem Datum aus«. Jeder Benutzer hat seine  eigene
       Crontab.  Befehle  in  diesen  übergebenen  Crontabs  werden unter der Benutzerkennung des
       Eigentümers der jeweiligen Crontab ausgeführt. Uucp und  News  werden  normalerweise  ihre
       eigenen  Crontabs  haben, wodurch der explizite Aufruf von su(1) als Teil des Cron-Befehls
       vermieden wird.

       Leere Zeilen und vorangestellte Leerzeichen  und  Tabulatoren  werden  ignoriert.  Zeilen,
       deren  erstes Zeichen (nach möglichen Leerzeichen) eine Raute (#) ist, sind Kommentare und
       werden ignoriert. Beachten  Sie,  dass  Kommentare  nicht  auf  den  gleichen  Zeilen  wie
       Cron-Befehle  erlaubt  sind,  da  sie als Teil des Befehls betrachtet werden. Entsprechend
       sind Kommentare nicht auf  der  gleichen  Zeile  wie  Zuweisungen  der  Umgebungsvariablen
       erlaubt.

       Eine  aktive  Zeile  in  einer  Crontab  wird  entweder eine Umgebungseinstellung oder ein
       Cron-Befehl sein. Die Crontab-Datei wird von oben nach unten ausgewertet, daher  betreffen
       alle  Umgebungseinstellungen nur die Cron-Befehle, die nach diesen in der Datei vorkommen.
       Eine Umgebungseinstellung hat die folgende Form:

           Name = Wert

       Dabei sind Leerzeichen um das Gleichheitszeichen (=) herum optional und alle folgenden und
       nicht am Anfang stehenden Leerzeichen in Wert werden als Teil des Name zugewiesenen Wertes
       betrachtet. Der Wert kann in einfache oder doppelte (aber zueinander  passende)  englische
       Anführungszeichen eingeschlossen werden, um führende oder abschließende Leerraumzeichen zu
       erhalten. Um  eine  leere  Variable  zu  definieren,  müssen  englische  Anführungszeichen
       verwandt werden.

       Die  Zeichenkette  Wert  wird nicht auf Umgebungsvariablenersetzung oder der Ersetzung von
       Variablen oder der Tilde- (~)-Erweiterung hin ausgewertet, daher werden Zeilen der Form

           PATH = $HOME/bin:$PATH
           PATH = ~/bin:/usr/bin:/bin

       nicht so funktionieren, wie Sie es erwarten. Auch dies wird nicht funktionieren:

           A=1
           B=2
           C=$A $B

       Für die im letzten Wert definierte Variable wird es keine Ersetzung geben.

       Durch den cron(8)-Daemon wird eine Reihe von Umgebungsvariablen eingerichtet.  Shell  wird
       auf  /bin/sh und LOGNAME und HOME werden aus der /etc/passwd-Zeile des Crontab-Eigentümers
       gesetzt. PATH wird  auf  »/usr/bin:/bin«  gesetzt.  HOME,  SHELL  und  PATH  können  durch
       Einstellungen in der Crontab außer Kraft gesetzt werden; LOGNAME ist der Benutzer, von dem
       der Auftrag gestartet wurde und kann nicht geändert werden.

       (Ein weitere Hinweis: die Variable LOGNAME wird auf BSD-Systemen  manchmal  USER  genannt…
       auf diesen Systemen wird USER auch gesetzt.)

       Zusätzlich  zu LOGNAME, HOME und SHELL wird cron(8) auch MAILTO und MAILFROM prüfen, falls
       es einen Grund dafür hat, E-Mails als Konsequenz der Ausführung von Befehlen  in  »dieser«
       Crontab zu senden.

       Falls  MAILTO  definiert  (und  nicht  leer) ist, wird E-Mail an den so benannten Benutzer
       gesandt. MAILTO kann auch dazu verwandt werden, E-Mail an  mehrere  Empfänger  zu  lenken,
       indem  die  Empfängerbenutzer  durch Kommata getrennt werden. Falls MAILTO definiert, aber
       leer ist (MAILTO=""), wird keine  E-Mail  versandt.  Andernfalls  werden  E-Mails  an  den
       Eigentümer der Crontab gesandt.

       Falls  MAILFROM  definiert  ist,  wird  die  Absender-E-Mail-Adresse auf MAILFROM gesetzt.
       Andernfalls wird die E-Mail von »root (Cron Daemon)« gesandt.

       Auf dem Debian GNU/Linux-System unterstützt Cron das Modul  pam_env  und  lädt  die  durch
       /etc/environment   und  /etc/security/pam_env.conf  definierte  Umgebung.  Es  liest  auch
       Locale-Informationen aus /etc/default/locale. Allerdings  setzen  PAM-Einstellungen  weder
       die   oben   beschriebenen   noch   weitere,   in  der  crontab-Datei  selbst  angegebenen
       Einstellungen, NICHT außer Kraft. Beachten Sie insbesondere, dass  Sie  den  PATH  in  der
       Crontab-Datei  selbst  setzen  müssen,  wenn  Sie  etwas anderes als »/usr/bin:/bin« haben
       möchten.

       Standardmäßig sendet Cron E-Mails mit dem Header »Content-Type:« auf »text/plain« und  dem
       Parameter  »charset=«  auf die Tastaturbelegung / die Codeliste der Locale gesetzt, in der
       crond(8)  gestartet  wurde  –  d.h.  entweder  der  Standard-System-Locale,  falls   keine
       LC_*-Umgebungsvariablen   gesetzt   sind,   oder  der  durch  die  LC_*-Umgebungsvariablen
       festgelegten Locale  (siehe  locale(7)).  Durch  Setzen  der  Variablen  CONTENT_TYPE  und
       CONTENT_TRANSFER_ENCODING  in  den  Crontabs  können  Sie  andere  Zeichenkodierungen  für
       versandte Ausgaben von Cron-Aufträgen setzen. Diese Variablen  müssen  auf  die  korrekten
       E-Mail-Header des gleichen Namens gesetzt werden.

       Das   Format   eines   Cron-Befehls   ist  fast  der  V7-Standard,  mit  einer  Reihe  von
       vorwärtskompatiblen Erweiterungen. Jede Zeile hat fünf Zeit-und-Datum-Felder, gefolgt  von
       einem  Befehl, gefolgt von einem Zeilenumbruchzeichen (»\n»). Die System-Crontab verwendet
       das  gleiche  Format,  außer   dass   der   Benutzername   für   den   Befehl   nach   den
       Zeit-und-Datum-Feldern  und  vor  dem  Befehl  angegeben  wird.  Dies  Felder können durch
       Leerzeichen  oder  Tabulatoren  getrennt  werden.  Die  maximal  erlaubte  Länge  für  die
       Befehlsfelder ist 998 Zeichen.

       Befehle   werden   durch   cron(8)   ausgeführt,   wenn   die   Minuten-,   Stunden-   und
       Monat-des-Jahres-Felder mit der aktuellen Zeit übereinstimmen und  wenn  mindestens  eines
       der  zwei  Tagesfelder  (Tage  des  Monats  oder  Tag  der  Woche)  mit der aktuellen Zeit
       übereinstimmt (siehe nachfolgenden »Hinweis«). cron(8) untersucht Cron-Einträge einmal pro
       Minute. Die Zeit- und Datumsfelder sind:

              Feld           Zulässige Werte
              -----          --------------
              Minute         0…59
              Stunde         0…23
              Tag des Monats 1…31
              Monat          1…12 (oder englische Namen, siehe unten)
              Tag der Woche  0…7 (0 oder 7 ist Son, oder verwenden Sie englische Namen)

       Ein Feld kann einen Stern (*) enthalten, der immer für »erster-letzter« steht.

       Zahlenbereiche  sind erlaubt. Bereiche sind zwei durch einen Bindestrich getrennte Zahlen.
       Der Bereich schließt die angegebenen Zahlen ein.  Beispielsweise  legt  »8-11«  für  einen
       »Stunden«-Eintrag die Ausführung zu den Stunden 8, 9, 10 und 11 fest.

       Listen  sind  erlaubt. Eine Liste ist eine durch Kommata getrennte Gruppe von Zahlen (oder
       Bereichen). Beispiele: »1,2,5,9«, »0-4,8-12«.

       Im Zusammenhang mit Bereichen können Schrittwerte verwandt werden. Wird an  einen  Bereich
       »/<Zahl>«  angehängt,  dann  legt  dies  den  numerischen  Wert für die Schritte durch den
       Bereich fest. Beispielsweise  kann  »0-23/2«  im  Stunden-Feld  verwandt  werden,  um  die
       Ausführung  zu  jeder  zweiten  Stunde  festzulegen  (die  Alternative  im V7-Standard ist
       »0,2,4,6,8,10,12,14,16,18,20,22«). Schritte sind auch nach einem Stern erlaubt, falls  Sie
       also »alle zwei Stunden« festlegen möchten, verwenden Sie einfach »*/2«.

       Für  die  Felder  »Monat« und »Tag der Woche« können auch englische Namen verwandt werden.
       Verwenden Sie die ersten drei (englischen) Buchstaben des  bestimmten  Tages  oder  Monats
       (Groß-/Kleinschreibung ist egal). Bereiche oder Listen von Namen sind nicht erlaubt.

       Das  »sechste«  Feld (der Rest der Zeile) legt den auszuführenden Befehl fest. Der gesamte
       Befehlsanteil der Zeile, bis zu einem Zeilenumbruch oder dem %-Zeichen wird durch  /bin/sh
       oder  der  durch  die  Variable  SHELL  der  Crontab-Datei  festgelegten Shell ausgeführt.
       Prozentzeichen (%) im Befehl werden in Zeilenumbruchzeichen umgewandelt, falls  sie  nicht
       mit dem Rückwärtsschrägstrich (\) maskiert sind und alle Daten nach dem ersten % werden an
       den Befehl als Standardeingabe gesandt. Es gibt keine Möglichkeit, einen einzelnen  Befehl
       auf mehrere Zeilen aufzuteilen, wie mit dem abschließenden »\« der Shell.

       Hinweis:  Der Tag der Ausführung des Befehls kann über zwei Felder festgelegt werden — Tag
       des Monats und Tag der Woche. Falls beide Felder eingeschränkt  sind  (d.h.  nicht  mit  *
       beginnen)  wird  der Befehl ausgeführt, wenn eines der beiden Felder auf die aktuelle Zeit
       passt. Beispielsweise würde
       »30 4 1,15 * 5« dazu führen, dass ein Befehl um 4:30 Uhr am 1. und  am  15.  jedes  Monats
       sowie  jeden  Freitag  ausgeführt  würde.  Sie  können  allerdings das gewünschte Ergebnis
       erhalten, indem Sie dem Befehl  einen  Test  hinzufügen  (siehe  das  letzte  Beispiel  in
       nachfolgender BEISPIEL-CRON-DATEI).

       Anstatt  der  ersten  fünf  Felder  kann  eine  der  folgenden,  speziellen  Zeichenketten
       auftauchen:

              Zeichenkette   Bedeutung
              ------------   ---------
              @reboot        Einmal beim Systemstart ausführen.
              @yearly        Einmal pro Jahr ausführen, »0 0 1 1 *«.
              @annually      (identisch zu @yearly)
              @monthly       Einmal pro Monat ausführen, »0 0 1 * *«.«
              @weekly        Einmal pro Woche ausführen, »0 0 * * 0«.
              @daily         Einmal pro Tag ausführen, »0 0 * * *«.
              @midnight      (identisch zu @daily)
              @hourly        Einmal pro Stunde ausführen »0 * * * *«.

       Bitte beachten Sie, dass der Systemstart, soweit es @reboot betrifft, der  Zeitpunkt  ist,
       zu  dem  der  cron(8)-Daemon  startet.  Dies mag insbesondere früher als der Start einiger
       Daemons   oder   anderer    Einrichtungen    sein.    Dies    geschieht    aufgrund    der
       Systemstartreihenfolge der Maschine.

BEISPIEL FÜR EINE CRON-DATEI

       Nachfolgend ein Beispiel einer Benutzer-Crontab-Datei.

       # /bin/bash anstatt der Vorgabe /bin/sh zur Ausführung von Programmen verwenden
       SHELL=/bin/bash
       # sämtliche Ausgaben an »paul« schicken, egal wessen Crontab dies ist
       MAILTO=paul
       #
       # jeden Tag fünf Minuten nach Mitternacht ausführen
       5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
       # um 14:15 am ersten Tag jedes Monats ausführen — Ausgabe wird an Paul geschickt
       15 14 1 * *     $HOME/bin/monthly
       # um 22 Wochentags ausführen, Joe ärgern
       0 22 * * 1-5    mail -s "Es ist 22:00 Uhr" joe%Joe,%%Wo sind Deine Kinder?%
       23 0-23/2 * * * echo "23 Minutes nach Mitternacht, 2 Uhr, 4 …, jeden Tag ausführen"
       5 4 * * sun     echo "5 Minuten nach 4 Uhr Sonntags ausführen"
       0 */4 1 * mon   echo "alle vier Stunden am 1. und an jedem Montag ausführen"
       0 0 */2 * sun   echo "um Mitternacht an jedem Sonntag, der an einem ungeraden Tag ist, ausführen"
       # An jedem zweiten Samstag des Monats ausführen
       0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "2. Samstag"

       Alle  obigen  Beispiele  führen  nicht-interaktive  Programme  aus. Falls Sie ein Programm
       ausführen möchten, das mit dem Benutzer in Wechselspiel auf dem Desktop tritt, müssen  Sie
       sicherstellen, dass die geeignete Umgebungsvariable DISPLAY gesetzt ist.

       # Führt täglich um 10:00 Uhr ein Programm und eine Benachrichtigung aus
       0 10 * * *  $HOME/bin/program | DISPLAY=:0 notify-send "Programmausführung" "$(cat)"

BEISPIEL FÜR EINE CRON-DATEI DES SYSTEMS

       Nachfolgend  ein Beispiel des Inhaltes einer regulären, systemweiten Crontab-Datei. Anders
       als eine Benutzer-Crontab hat diese Datei ein Benutzernamenfeld, wie dies von /etc/crontab
       verwandt wird.

       # /etc/crontab: systemweite Crontab
       # Anders als alle Crontabs müssen Sie nicht den Befehl »crontab«
       # ausführen, um die neue Version zu installieren, wenn Sie diese
       # Datei und Dateien in /etc/cron.d bearbeiten. Diese Dateien haben
       # auch ein Benutzernamenfeld, was sonst keine andere Crontab hat.

       SHELL=/bin/sh
       PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

       # Beispiel für Auftragsdefinition:
       # .---------------- Minute (0 - 59)
       # |  .------------- Stunde (0 - 23)
       # |  |  .---------- Tag des Monats (1 - 31)
       # |  |  |  .------- Monat (1 - 12) ODER jan,feb,mar,apr …
       # |  |  |  |  .---- Tag der Woche (0 - 6) (Sonntag=0 oder 7) ODER sun,mon,tue,wed,thu,fri,sat
       # |  |  |  |  |
       # m h Tag Mon TdW BenutzerBefehl
       17 * * * *  root  cd / && run-parts --report /etc/cron.hourly
       25 6 * * *  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
       47 6 * * 7  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
       52 6 1 * *  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
       #

       Beachten  Sie,  dass  alle systemweiten Aufgaben standardmäßig zwischen 6 und 7 Uhr laufen
       werden. Falls das System zu diesem Zeitpunkt  nicht  eingeschaltet  ist,  werden  nur  die
       stündlichen Aufgaben ausgeführt, außer die obigen Vorgaben werden geändert.

SIEHE AUCH

       cron(8), crontab(1)

ERWEITERUNGEN

       Bei  der  Angabe  des  Tages  der  Woche  werden  sowohl  Tag 0 als auch Tag 7 als Sonntag
       betrachtet. BSD und AT&T scheinen sich darüber uneinig zu sein.

       Listen und Bereiche können im gleichen Feld simultan existieren. »1-3,7-9« würde von AT&T-
       und BSD-Cron abgelehnt — sie würden NUR »1-3« oder »7,8,9« sehen wollen.

       Bereiche können »Schritte« enthalten, daher ist »1-9/2« identisch zu »1,3,5,7,9«.

       Monate oder Tage der Woche können durch ihren englischen Namen angegeben werden.

       In  der  Crontab  können  Umgebungsvariablen  gesetzt  werden.  In BSD und AT&T ist die an
       Kindprozesse übergebene Umgebung im Prinzip die von /etc/rc.

       Die Ausgabe von Befehlen wird an den Eigentümer der Crontab per E-Mail gesandt  (BSD  kann
       dies  nicht),  kann  an  eine vom Eigentümer verschiedene Person per E-Mail gesandt werden
       (SysV kann dies nicht) oder diese Funktionalität kann ausgeschaltet  werden  und  es  wird
       überhaupt keine E-Mail gesandt (SysV kann dies auch nicht).

       Alle  der  »@«-Befehle,  die  an  Stelle  der  ersten  fünf Felder auftauchen können, sind
       Erweiterungen.

EINSCHRÄNKUNGEN

       Der Damon cron läuft mit einer definierte Zeitzone. Derzeit werden keine benutzerbezogenen
       Zeitzonen  unterstützt.  Sämtliche  Aufgaben  (sowohl  vom  System als auch den Benutzern)
       werden basierend auf der konfigurierten Zeitzone ausgeführt. Selbst wenn der Benutzer  die
       Umgebungsvariable  TZ  in  seiner  crontab  festlegt,  wird  dies  nur  die in der Crontab
       ausgeführten Befehle betreffen, nicht die Ausführung der Programme der Crontab selbst.

       POSIX legt fest, dass die Felder »Tag des Monats«  und  »Tag  der  Woche«  beide  auf  die
       aktuelle   Zeit  passen,  falls  einer  von  ihnen  ein  *  ist.  Allerdings  prüft  diese
       Implementierung nur, ob das erste Zeichen ein * ist. Daher wird »0  0  */2  *  sun«  jeden
       Sonntag an einem ungeraden Tag ausgeführt, während der POSIX-Standard verlangt, dass er an
       jedem Sonntag und an jedem ungeraden Tag ausgeführt würde.

       Die Syntax  von  crontab  ermöglicht  es  nicht,  alle  möglichen  denkbaren  Perioden  zu
       definieren.  Beispielsweise  ist  es nicht offensichtlich, wie der letzte Arbeitstag eines
       Monats definiert werden kann. Um einen Auftrag zu einer Zeit auszuführen,  die  nicht  mit
       der  Syntax  von crontab definiert werden kann, ist es am besten, dass das Programm selbst
       die Datums- und Zeitinformation prüft und die Ausführung nur fortsetzt, falls die  Periode
       die gewünschte ist.

       Falls  das  Programm  die  Überprüfung nicht selbst durchführen kann, wird ein umhüllendes
       Skript notwendig. Nützliche Werkzeuge hierfür sind ncal(1) or calendar(1). Um ein Programm
       beispielsweise  am  letzten  Samstag  jedes  Monats  auszuführen,  könnten  Sie  folgenden
       einhüllenden Code verwenden:

       0 4 * * Sat   [ "$(date +\%e)" = "$(LANG=C ncal | sed -n 's/^Sa .* \([0-9]\+\) *$/\1/p')" ] && echo "Last Saturday" && auszuführendes_Programm

DIAGNOSE

       Cron verlangt, dass jeder Eintrag in einer Crontab mit einem  Zeilenumbruchzeichen  endet.
       Falls  dem  letzten  Eintrag  ein Zeilenumbruch fehlt (d.h. sie mit EOF beendet ist), wird
       Cron die Crontab als (zumindestens teilweise) defekt betrachten. Es wird eine Warnung  ins
       Systemprotokoll geschrieben.

AUTOR

       Paul  Vixie  <paul@vix.com>  ist der Autor von cron und der ursprüngliche Verfasser dieser
       Handbuchseite.  Diese  Handbuchseite  wurde  für  Debian  von  Steve   Greenland,   Javier
       Fernandez-Sanguino, Christian Kastner und Christian Pekeler angepasst.

ÜBERSETZUNG

       Die    deutsche   Übersetzung   dieser   Handbuchseite   wurde   von   Mario   Blättermann
       <mario.blaettermann@gmail.com> und Helge Kreutzmann <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version  3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ oder neuer bezüglich der Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-
       Mail an die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.