Provided by: manpages-de_4.13-4_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 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.

4th Berkeley Distribution                         19 April 2010                                       CRONTAB(5)