Planung der Ausführung von Befehlen

crontab: Auflisten und Editieren der Datei crontab

crontab ist ein Hilfsprogramm mit dem Sie Befehle in regelmäßigen Zeitintervallen starten können ohne dabei selbst am System angemeldet sein zu müssen. crontab wird die Ausgabe Ihres Befehls per Mail an Sie schicken. Sie können die Zeitintervalle in Minuten, Stunden, Tagen und sogar Monaten festlegen. Je nach angegebener Option verhält sich crontab unterschiedlich:

  • -l: gibt den Inhalt Ihrer aktuellen Datei crontab aus.

  • -e: damit starten Sie das Editieren der Datei crontab.

  • -r: entfernt Ihre aktuelle crontab-Datei.

  • -u <user>: führt eine der oben genannten Optionen für den Benutzer <user> aus. Das darf natürlich nur root.

Fangen wir mit dem Editieren einer crontab-Datei an. Wenn Sie die Umgebungsvariable EDITOR oder VISUAL gesetzt haben befinden Sie sich nach der Eingabe von crontab -e in Ihrem bevorzugten Editor, anderenfalls wird Vi geöffnet. Eine Zeile in der crontab-Datei besteht aus sechs Feldern. Die ersten fünf Felder bestehen aus den Angaben für die Minuten, Stunden, Tage und Wochentage des Intervalls. Das sechste Feld beinhaltet den auszuführenden Befehl. Zeilen, die am Anfang das Zeichen # aufweisen, werden als Kommentar betrachtet und von crond (dem Programm, das für die Ausführung der crontab-Dateien verantwortlich ist) ignoriert. Hier ist ein Beispiel einer crontab:

[Note]Anmerkung

Um das Folgende in lesbarer Form darzustellen, mussten einige lange Zeilen umbrochen und in einer neuen Zeile fortgesetzt werden. Wenn also am Ende einer Zeile das Zeichen \ steht, bedeutet das, dass die Zeile nach einem Umbruch fortgesetzt wird. Diese Konvention wird in Makefiles, in der shell und auch in anderen Fällen eingesetzt.

# Falls Sie nicht per Mail benachrichtigt werden wollen 
# kommentieren Sie die folgende Zeile aus:
#MAILTO="your_email_address"
#
# Bericht über neue Bilder alle 2 Tage um 2 Uhr nachmittags, 
# ausgehend vom oben genannten Beispiel - danach soll die 
# "stamp"-Datei wieder aktualisiert werden. 
# Das Zeichen "%" wird als neue Zeile interpretiert. 
# Dadurch können Sie mehrere Befehle in eine Zeile schreiben.
0 14 */2 * *  find /shared/images              \
  -cnewer /shared/images/stamp                 \
  -a -iregex ".*\.jpe?g"                       \
  -a -not -regex                               \
    ".*/old/.*"%touch /shared/images/stamp
#
# Am ersten Weihnachtsfeiertag eine Melodie spielen :)
0 0 25 12 * mpg123 $HOME/sounds/merryxmas.mp3
#
# Drucke jeden Dienstag um 17 Uhr die Einkaufsliste aus...
0 17 * * 2 lpr $HOME/shopping-list.txt

Es gibt ausser den hier gezeigten noch mehrere andere Arten, die Zeitintervalle anzugeben. Sie können etwa eine durch Kommata getrennte Folge von bestimmten Zahlen (1,14,23) oder einen Zahlenbereich (1-15), ja, sogar eine Kombination von beiden (1-10,12-20), optional mit einer Schrittangabe (1-12,20-27/2), angeben. Jetzt ist es an Ihnen, hier hilfreiche und sinnvolle Befehle einzugeben!

at: Planen eines nur einmal auszuführenden Befehls

Sie möchten vielleicht auch einen Befehl eingeben, der einmal zu einer vorbestimmten Zeit, aber nicht regelmäßig ausgeführt wird. Lassen Sie sich beispielsweise an eine Verabredung um 18:00 Uhr erinnern. Sie arbeiten mit X, das Paket X11R6-contrib ist installiert und Sie wollen um 17:30 Uhr an den Aufbruch erinnert werden. Dann ist at das richtige Programm:

$ at 5:30pm
  # Sie befinden sich jetzt am "at"-Prompt
at> xmessage "Zeit, aufzubrechen! Verabredung um 18:00"
  # Drücken Sie Strg-d zum Verlassen
at> <EOT>
$

Die Zeit kann in mehreren Varianten angegeben werden:

  • now + <interval>: jetzt plus dem angegebenen Intervall (Optional. Ohne angegebenes Intervall bedeutet es: Jetzt.). Die Syntax für das Interval ist <n> (minuten|stunden|tage|wochen|monate). Sie könnten beispielsweise angeben: now + 1 hour (in einer Stunde ab jetzt), now + 3 days (in drei Tagen ab heute), usw.

  • <zeit> <tag>: damit wird der Zeitpunkt genau festgelegt. Die Angabe des Parameters <zeit> ist vorgeschrieben. at ist bei der Formatierung sehr liberal: Sie können beispielsweise 0100, 04:20, 2am, 0530pm, 1800 oder einen von drei festgelegten Zeitpunkten angeben: noon, teatime (16:00) oder midnight. Die Angabe des Parameters <tag> hingegen ist optional. Auch diese Angabe kann in verschiedenen Arten erfolgen: 12/20/2001 (also der 20. Dezember 2001) oder in europäischer Art 20.12.2001. Wenn Sie die Jahresangabe weglassen wollen ist nur die europäische Angabe erlaubt: 20.12. Den Monat können Sie auch in Form von Buchstaben eingeben: Dec 20 oder 20 Dec sind beide gültig.

at akzeptiert verschiedene Optionen:

  • -l: gibt eine Liste der aktuell anliegenden Jobs aus, in der das erste Feld die Nummer des Jobs angibt. Das ist das Äquivalent zum Befehl atq.

  • -d <n>: entfernt den Job Nummer <n> aus der Warteschlange. Die Jobnummern bekommen Sie mit dem Befehl atq. Das ist das Äquivalent zu dem Befehl atrm <n>.

Wie gewohnt finden Sie weitere Optionen in der manpage von at(1).