Befehl "crontab"

Zweck

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

Syntax

crontab [ -e [Benutzername] | -l [Benutzername] | -r [Benutzername] | -v [Benutzername] | 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 Format für Einträge in der crontab-Datei.

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.

Dämon "cron"

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 crontab-Dateien nur, wenn er 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 der Rootbenutzer kann den Befehl ausführen).
  • 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  Stunde Tag_des_Monats Monat Wochentag Befehl

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 aus dem angegebenen Bereich. Wenn ein Befehl im Mai ausgeführt werden soll, geben Sie 5 für das Feld Monat an.
  • Zwei durch einen Stich getrennte Zahlen, die einen einschließenden Bereich anzeigen. Wenn Sie einen Cron-Job jeweils Dienstag bis Freitag ausführen möchten, geben Sie 2-5 für das Feld Wochentag an.
  • Durch Kommas getrennte Liste von 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.
  • Stern (*), der für alle zulässigen Werte steht. Wenn Sie einen Job stündlich ausführen möchten, geben Sie einen Stern für das Feld "Stunde" an.
Anmerkung: Jedes Zeichen, dem ein Backslash vorangestellt ist (einschließlich %), bewirkt, dass dieses Zeichen "wörtlich", d. h. als das Zeichen, das es tatsächlich darstellt, 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 Befehl

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 dem Prozentzeichen vorangestellt ist, als Befehlsaufruf und stellt alles, was dem Prozentzeichen folgt, in der Standardeingabe bereit, sofern Sie das Prozentzeichen nicht mit einem Escapezeichen versehen (\%). Leere Zeilen 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.

Anmerkung: 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 Berechtigungen und Autorisierungen für diesen Befehl finden Sie in den Beschreibungen des Befehls lssecattr und des Unterbefehls getcmdattr.

Flags

Element Beschreibung
-e Benutzername 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 Benutzername Listet die crontab-Datei des Benutzers auf.
-r Benutzername Entfernt die crontab-Datei des Benutzers aus dem crontab-Verzeichnis.
-v Benutzername Listet den Status der Cron-Jobs des Benutzers auf.

Exitstatus

Diese Befehle geben die folgenden Exitwerte zurück:

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

Beispiele

  1. Geben Sie Folgendes ein, um eine Datei mit dem Namen mycronjobs in das Verzeichnis /var/spool/cron/crontabs zu kopieren:
    crontab mycronjobs
    Die Datei wird wie folgt kopiert:
    /var/spool/cron/crontabs/<Benutzername>
    <Benutzername> steht für Ihren aktuellen Benutzernamen.
  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. Geben Sie Folgendes ein, um den Befehl calendar jeden Montag, Mittwoch und Freitag um 6:30 Uhr auszuführen:
    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. Geben Sie Folgendes ein, um jeden Tag im August um 0:00 Uhr das Script mit dem Namen maintenance auszuführen:
    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.