Befehl "crontab"

Zweck

Mit diesem Befehl können Sie Cron-Jobs übergeben, bearbeiten, auflisten und entfernen.

Syntax

crontab [ -e [UserName] | -l [UserName] | -r [UserName] | -v [UserName] | Datei ]

Beschreibung

Mit dem Befehl crontab können Sie Cron-Jobs übergeben, bearbeiten, auflisten und entfernen. Ein Cron-Job ist ein Befehl, der vom Dämon cron in regelmäßigen Abständen ausgeführt wird. Wenn Sie einen Cron-Job übergeben möchten, geben Sie den Befehl crontab mit dem Flag -e an. Der Befehl crontab ruft eine Bearbeitungssitzung auf, in der Sie eine crontab-Datei erstellen können. In dieser Datei erstellen Sie Einträge für jeden Cron-Job. Jeder Eintrag muss in einem für den Dämon cron akzeptablen Format angegeben werden. Informationen zum Erstellen von Einträgen finden Sie unter The crontab File Entry Format.

Wenn Sie alle Einträge erstellt haben und die Datei verlassen, kopiert der Befehl crontab die Datei unter einem Dateinamen, der Ihren aktuellen Benutzernamen widerspiegelt, in das Verzeichnis /var/spool/cron/crontabs. Wenn bereits eine Datei mit Ihrem Namen im Verzeichnis crontabs vorhanden ist, wird diese vom Befehl crontab überschrieben.

Alternativ können Sie eine crontab-Datei erstellen, indem Sie den Parameter Datei angeben. Wenn die Datei vorhanden ist, muss sie das vom Dämon cron erwartete Format haben. Wenn die Datei nicht vorhanden ist, ruft der Befehl crontab den Editor auf. Wenn die Umgebungsvariable EDITOR definiert ist, ruft der Befehl den angegebenen Editor auf. Andernfalls verwendet der Befehl crontab den Editor vi.

Geben Sie den Befehl crontab mit dem Flag -l an, um den Inhalt Ihrer crontab-Datei aufzulisten. Wenn Sie eine vorhandene Datei entfernen möchten, verwenden Sie dazu das Flag -r.

Der optionale Parameter Benutzername kann vom Eigner der crontab-Datei oder vom Rootbenutzer verwendet werden, um die Cron-Jobs für den angegebenen Benutzer zu bearbeiten, aufzulisten, zu entfernen oder deren Status zu überprüfen. Wenn der Benutzername ungültig ist, wird eine Fehlernachricht generiert und das Programm beendet.

Wenn der optionale Parameter Benutzername nicht angegeben wird, sind die crontab-Flags für den Rootbenutzer und den aktuellen Benutzer verfügbar.

Sicherheit

Nur der Rootbenutzer und der Eigner der crontab-Datei können den Parameter Benutzer mit den Flags -e, -l, -r und -v angeben, um die crontab-Datei des angegebenen Benutzers zu bearbeiten, aufzulisten, zu entfernen und zu überprüfen.

cron-Dämon

Der Dämon cron führt Befehle entsprechend den Einträgen in der crontab-Datei aus. Sofern Sie die Ausgabe eines Cron-Jobs nicht an die Standardausgabe oder Standardfehlerausgabe umleiten, sendet der Dämon cron jede Befehlsausgabe und jeden Fehler per Mail an Sie. Wenn Sie in der crontab-Datei einen Cron-Job falsch angeben, führt der Dämon cron den Job nicht aus.

Der Dämon cron untersucht cron -Dateien nur, wenn der Dämon cron initialisiert wird. Wenn Sie mit dem Befehl crontab Änderungen an Ihrer crontab-Datei vornehmen, wird eine Nachricht bezüglich der Änderung an den Dämon cron gesendet. Dadurch entfällt der Aufwand für die regelmäßige Prüfung, ob neue oder geänderte Dateien verfügbar sind.

Steuerelemente für die Verwendung des Befehls "crontab"

Die Dateien /var/adm/cron/cron.allow und /var/adm/cron/cron.deny steuern, welche Benutzer den Befehl crontab verwenden können. Ein Rootbenutzer kann diese Dateien erstellen, bearbeiten und löschen. Bei den Einträgen in diesen Dateien handelt es sich um Benutzeranmeldenamen, die jeweils zeilenweise aufgelistet werden. Wenn Ihre Anmelde-ID mehreren Anmeldenamen zugeordnet ist, verwendet der Befehl crontab den ersten Anmeldenamen, der in der Datei /etc/passwd angegeben ist, unabhängig davon, welchen Anmeldenamen Sie tatsächlich verwenden. Wenn Sie auch Benutzern erlauben möchten, Cron-Jobs zu starten, muss das Attribut "daemon" in der Datei /etc/security/user mit dem Befehl chuser auf TRUE gesetzt werden.

Im Folgenden sehen Sie eine Beispieldatei cron.allow:

root
nick
dee
sarah

Wenn die Datei cron.allow vorhanden ist, können nur Benutzer, deren Anmeldenamen in dieser Datei enthalten sind, den Befehl crontab verwenden. Der Anmeldename des Rootbenutzers muss in der Datei cron.allow enthalten sein, wenn die Datei vorhanden ist. Ein Systemadministrator kann einem Benutzer die Verwendung des Befehls crontab explizit verweigern, indem er den Anmeldenamen des Benutzers in der Datei cron.deny auflistet. Wenn nur die Datei cron.deny vorhanden ist, kann jeder Benutzer, dessen Name nicht in dieser Datei enthalten ist, den Befehl crontab verwenden.

Ein Benutzer kann den Befehl crontab nicht verwenden, wenn eine der folgenden Bedingungen zutrifft:

  • Die Datei cron.allow und die Datei cron.deny sind nicht vorhanden (nur Root ist zulässig).
  • Die Datei cron.allow ist vorhanden, aber der Anmeldename des Benutzers ist nicht darin aufgelistet.
  • Die Datei cron.deny ist vorhanden und der Anmeldename des Benutzers ist darin aufgelistet.

Wenn weder die Datei cron.allow noch die Datei cron.deny vorhanden ist, kann nur ein Benutzer mit Rootberechtigung einen Job mit dem Befehl crontab übergeben.

Format für Einträge in der crontab-Datei

Eine crontab-Datei enthält Einträge für jeden Cron-Job. Einträge werden durch Zeilenvorschubzeichen voneinander getrennt. Jeder Eintrag in der crontab-Datei enthält sechs durch Leerzeichen oder Tabulatoren getrennte Felder im folgenden Format:

 
minute  hour  day_of_month  month  weekday  command

Für die Felder können die folgenden Werte angegeben werden:

Element Beschreibung
Minute 0 bis 59
Stunde 0 bis 23
Tag_des_Monats 1 bis 31
Monat 1 bis 12
Wochentag 0 bis 6 für Sonntag bis Samstag
Befehl Shellbefehl

Sie müssen für jedes Feld einen Wert angeben. Mit Ausnahme des Felds Befehl können diese Felder die folgenden Werte enthalten:

  • Eine Zahl im angegebenen Bereich. Wenn ein Befehl im Mai ausgeführt werden soll, geben Sie 5 für das Feld Monat an.
  • Zwei Zahlen, die durch einen Gedankenstrich getrennt sind, um einen einschließenden Bereich anzugeben. Wenn Sie einen Cron-Job jeweils Dienstag bis Freitag ausführen möchten, geben Sie 2-5 für das Feld Wochentag an.
  • Eine durch Kommas getrennte Liste mit Zahlen. Wenn Sie einen Befehl am ersten und am letzten Tag im Januar ausführen möchten, geben Sie 1,31 für das Feld Tag_des_Monats an.
  • Kombination von zwei durch einen Stich getrennten Zahlen, die einen einschließenden Bereich angeben, und einer durch Kommas getrennten Liste von Zahlen. Wenn Sie einen Befehl am ersten, am zehnten bis sechzehnten und am letzten Tag im Januar ausführen möchten, geben Sie 1,10-16,31 für das Feld "Tag_des_Monats" an. Die beiden zuvor genannten Punkte können auch in Kombination verwendet werden.
  • Ein Stern ( * ), d. h. alle zulässigen Werte. Wenn Sie einen Job stündlich ausführen möchten, geben Sie einen Stern für das Feld "Stunde" an.
Hinweis: Jedes Zeichen, dem ein Backslash (einschließlich%) vorangestellt ist, führt dazu, dass dieses Zeichen buchstabengetreu behandelt wird. Die Angabe der Tage kann über zwei Felder erfolgen (Tag_des_Monats und Wochentag). Wenn Sie beide Felder als Liste von Elementen angeben, werden beide berücksichtigt. Beispiel:
0 0 1,15 * 1 command

Diese Eintrag bewirkt, dass der angegebene Befehl an jedem ersten und fünfzehnten Tag jedes Monats sowie jeden Montag ausgeführt wird. Wenn Sie die Tage nur mit einem Feld angeben möchten, muss das andere Feld einen Stern (*) enthalten.

Befehle angeben

Der Dämon cron führt den im sechsten Feld angegebenen Befehl am ausgewählten Datum zur ausgewählten Uhrzeit aus. Wenn Sie ein Prozentzeichen (%) in das sechste Feld einfügen, behandelt der Dämon cron alles, was ihm vorausgeht, als Befehlsaufruf und macht alle nachfolgenden Elemente für die Standardeingabe verfügbar, sofern Sie das Prozentzeichen (\ %) nicht mit Escapezeichen versehen. Leerzeilen und Zeilen, deren erstes nicht leeres Zeichen das Nummernzeichen (#) ist, werden ignoriert. Wenn die Argumente für den Befehl einen Backslash ('\') enthalten, muss dem Backslash ein weiterer Backslash vorangestellt werden.

Hinweis: Die Shell führt nur die erste Zeile des Befehlsfelds aus. Alle anderen Zeilen werden dem Befehl als Standardeingabe zur Verfügung gestellt.

Der Dämon cron startet eine Subshell über Ihr HOME-Verzeichnis. Wenn Sie einen Befehl so terminieren, dass er ausgeführt wird, wenn Sie nicht angemeldet sind, und möchten, dass Befehle in Ihrer Datei .profile ausgeführt werden, muss der Befehl Ihre Datei .profile einlesen.

Der Dämon cron stellt für jede Shell eine Standardumgebung bereit, die HOME, LOGNAME, SHELL (=/usr/bin/sh) und PATH (=/usr/bin) definiert.

Prüfereignisse

Wenn das Prüfsubsystem ordnungsgemäß konfiguriert und aktiviert ist, generiert der Befehl crontab bei jeder Ausführung den folgenden Prüfdatensatz (Ereignis):

Ereignis Informationen
CRON_JobRemove Listet auf, welche Benutzer eine crontab-Datei entfernt haben und wann.
CRON_JobAdd Listet auf, welche Benutzer eine crontab-Datei bearbeitet haben und wann.

Hinweis für Benutzer von RBAC und Trusted AIX® :Dieser Befehl kann privilegierte Operationen ausführen. Privilegierte Operationen können nur von privilegierten Benutzern ausgeführt werden. Weitere Informationen zu Berechtigungen und Autorisierungen finden Sie im Abschnitt "Privileged Command Database" in der Veröffentlichung Security. Eine Liste der Privilegien und Berechtigungen für diesen Befehl finden Sie in den Beschreibungen des Befehls lssecattr und des Unterbefehls getcmdattr.

Flags

Element Beschreibung
-e UserName Bearbeitet eine Kopie der crontab-Datei des Benutzers oder erstellt eine leere Datei, die bearbeitet wird, wenn die crontab-Datei für einen gültigen Benutzernamen nicht vorhanden ist. Nach Abschluss der Bearbeitung wird die Datei als crontab-Datei des Benutzers in das crontab-Verzeichnis kopiert.
-l UserName Listet die crontab-Datei des Benutzers auf.
-r UserName Entfernt die crontab-Datei des Benutzers aus dem crontab-Verzeichnis.
-v UserName Listet den Status der Cron-Jobs des Benutzers auf.

Exitstatus

Dieser Befehl gibt die folgenden Exitwerte zurück:

Element Beschreibung
0 Erfolgreiche Ausführung.
>0 Es ist ein Fehler aufgetreten.

Beispiele

  1. Zum Kopieren einer Datei mit dem NamenmycronjobsGeben Sie im Verzeichnis /var/spool/cron/crontabs Folgendes ein:
    crontab mycronjobs
    Die Datei wird wie folgt kopiert:
    /var/spool/cron/crontabs/<username>
    Dabei ist <Benutzername> Ihr aktueller Benutzername.
  2. Geben Sie Folgendes ein, um die Uhrzeit stündlich jeweils zur vollen Stunde in die Konsole zu schreiben:
    0 * * * * echo The hour is `date` . 
    >/dev/console
  3. Zum Ausführen des Befehls calendar um 6:30 a.m. jeden Montag, Mittwoch und Freitag Folgendes eingeben:
    30 6 * * 1,3,5 /usr/bin/calendar
  4. Geben Sie Folgendes ein, um den Befehl calendar an jedem Tag des Jahres um 6.30 Uhr auszuführen:
    30 6 * * * /usr/bin/calendar
  5. So führen Sie ein Script aus:maintenanceGeben Sie jeden Tag um Mitternacht im August Folgendes ein:
    0 0 * 8 * /u/harry/bin/maintenance
  6. Geben Sie Folgendes ein, um Text für die Standardeingabe eines Befehls zu definieren:
    0 16 * 12 5 /usr/sbin/wall%HAPPY HOLIDAY!%Remember to 
    turn in your time card.
    Der Text hinter dem Prozentzeichen (%) definiert die Standardeingabe für den Befehl wall wie folgt:
    HAPPY HOLIDAY!
     
    Remember to turn in your time card.

Dateien

Element Beschreibung
/var/adm/cron/FIFO Eine benannte Pipe, die Nachrichten an den Dämon cron sendet, wenn neue Jobs mit dem Befehl crontab oder at übergeben werden.
/var/spool/cron/crontabs Gibt den crontab-Spoolbereich an.
/var/adm/cron/cron.allow Gibt eine Liste von Benutzern an, denen der Zugriff auf den Befehl crontab gewährt wird.
/var/adm/cron/cron.deny Gibt eine Liste von Benutzern an, denen der Zugriff auf den Befehl crontab verweigert wird.