Home / LinuxUser / 2000 / 12 / Jobs mit Cron abarbeiten

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(271 Punkte bei 22 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Diener auf die Minute

Jobs mit Cron abarbeiten

01.12.2000 So chaotisch Linuxer/innen auch manchmal sein mögen – meistens werkelt unbeachtet im Hintergrund ein Pünktlichkeitsfanatiker namens cron(d) auf ihren Rechnern. Ihn zu nutzen, kann eine Menge langweilige Arbeit ersparen.

Ob man seinen Rechner der MP3-Sammlung sei dank allmorgendlich als Wecker missbrauchen oder sich langweiliger, immer wiederkehrender Aufgaben bei der Systemadministration entledigen möchte – die Lösung des Problems heißt Cron, ein Dienst, der als Dämon namens cron oder crond still im Hintergrund vor sich hin werkelt.

Die Zentrale

Die zentrale Anlaufstelle, um sich der lästigen Pflichten zu entledigen, trägt den Namen /etc/crontab. Jede Minute kommt der Linux-Cron-Daemon angestolpert, um darin und in den persönlichen Crontabellen der User nachzuschauen, ob sich ein Auftrag findet, den es in dieser Minute zu erledigen gilt.

Während normalsterbliche Benutzer/innen sich des Programms crontab bedienen, das einen Editor aufruft und die syntaktische Korrektheit der Aufträge für cron überwacht, liegt die Verantwortung für die systemweite Crontabelle allein bei der Administratorin root und ihrem Lieblingseditor.

Auf den ersten Blick mag die Auftragsliste für Cron – Listing 1 zeigt ein Beispiel – etwas Erschrecken auslösen. Doch bei genauerer Betrachtung und/oder einem vergnüglichen Abend mit der ausnahmsweise auch für Nicht-Gurus gut verständlichen Manpage ( crontab) kommt man recht schnell hinter das Schema, das von Tabelle 1 erklärt wird.

Tabelle 1: Format eines Crontab-Eintrags

Minute(n) Stunde(n) Tag(e) Monat(e) Wochentag(e) User auszuführender Befehl

mögliche Werte

059 oder der Platzhalter *, der für alle Minuten von 0--59 steht 023, * ("jede Stunde") 131, * ("jeden Tag im Monat") 112, * ("jeden Monat"), JanDec oder jandec 07, wobei sowohl 0 als auch 7 für Sonntag stehen können, * ("jeden Wochentag"), SunSat oder sunsat nur in /etc/crontab: der Username der Benutzerin, mit deren Rechten der Befehl ausgeführt werden soll

Damit Cron seine Aufträge versteht, müssen sie in einem fest vorgegebenen sechs- (bei mit crontab erstellten, benutzerdefinierten Cron-Tabellen) bzw. siebenspaltigen (/etc/crontab) Tabellenformat aufgeschrieben werden. Ein Eintrag darf dabei keinen Zeilenumbruch enthalten und (in aller Regel) 1024 Zeichen nicht überschreiten.

Wer der Übersichtlichkeit wegen gern den einen oder anderen harten Zeilenumbruch einfügen will, kann das zwar tun, doch muss dann als letztes Zeichen vor dem Gebrauch der Enter-Taste ein \ stehen.

Als Spaltentrenner dienen normalerweise Leer- oder Tabulatorzeichen, und mit einem # am Anfang einer Zeile bestimmt man den Rest als wichtig für Menschen, jedoch unwichtig für Cron, also zum Kommentar.

Die systemweite Aufgabenliste für Cron in Listing 1 enthält demnach drei Aufträge: Täglich um 6.42 Uhr wird der Crondämon mit den Rechten von root das Kommando run-parts /etc/cron.daily ausführen. Jeden Sonntag (7) um 6.47 Uhr ist ein Lauf von run-parts /etc/cron.weekly fällig, und an jedem Ersten des Monats kommt fünf Minuten später (6.52 Uhr) noch ein run-parts /etc/cron.monthly hinzu.

Advanced Features

Neben den in Tabelle 1 angegebenen "einfachen" Angaben gibt es bei den unter Linux verwendeten Cron-Daemonen auch noch ein paar komplexere Möglichkeiten, Zeiten festzulegen:

  • Ein Minus (-) legt einen Zeitraum fest: 1-3 (ohne Leerzeichen dazwischen!) kann, je nach Spalte, "ein bis drei Minuten nach der vollen Stunde", "von 1 bis 3 Uhr", die ersten drei Tage eines Monats, "Januar bis März" oder aber "Montag bis Mittwoch" bedeuten.
  • Mit einem Komma lassen sich mehrere Zeitangaben trennen: 2,6 bedeutet in Spalte 1 "um zwei und sechs Minuten nach der in Spalte 2 angegebenen Stunde", in Spalte 2 "um 2 sowie 6 Uhr und den in Spalte 1 angegebenen Minuten", in der dritten Spalte "am 2. und 6. des Monats", an vierter Stelle "im Februar und im Juni" sowie in der Wochentagsspalte "am Dienstag und am Samstag". Dabei kann man auch Zeiträume kombinieren: 1-3,6,8-9 in der vierten (also der Monats-) Spalte steht für "Januar bis März, Juni, August und September".
  • Mit einem / und nachgestellter Zahl lassen sich Zeiträume "mit Lücken" angeben: */2 bedeutet – je nach Spalte – "alle 2 Minuten, Stunden, Tage, Monate, Wochentage", 1-6/2 ist dasselbe wie 1,3,5.

Mit einem /etc/crontab-Eintrag wie

43 5,13,21 * * * listar /home/listar/bin/gen-archive

wird der Cron-Daemon z. B. mit den Rechten des Benutzers listar um 5.43 Uhr, um 13.43 Uhr und um 21.43 Uhr das Programm /home/listar/bin/gen-archive ausführen. Dieses Beispiel stammt von einem Mailinglisten-Server und zeigt, dass Cron nicht etwa nur Systemprogramme, sondern z. B. auch von der Administratorin selbst geschriebene Shellskripte ausführen kann.

Gerade bei solchen zusammengesetzten Zeitangaben wie der Stundenangabe 5,13,21 empfiehlt es sich, darauf zu achten, dass man keine zusätzlichen Leerzeichen versehentlich einfügt – bei Manipulationen an der /etc/crontab ist man schließlich selbst die letzte Kontrollinstanz.

Listing 1

Beispiel einer systemweiten <I>/etc/crontab<I>

# /etc/crontab: systemweite Crontab
# Anders als bei jeder anderen Crontab benoetigen
# Sie das Kommando `crontab' hier nicht, um eine
# geaenderte Version dieser Datei zu installieren.
# Dieses File enthaelt zudem ein Feld "Benutzername",
# das in anderen Crontabelle fehlt.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
42 6 * * * root run-parts /etc/cron.daily
47 6 * * 7 root run-parts /etc/cron.weekly
52 6 1 * * root run-parts /etc/cron.monthly
Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

2829 Hits
Wertung: 0 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...
OpenLDAP Replikation
Ludwig jun. B., 25.04.2012 14:04, 2 Antworten
Hallo, bis jetzt habe ich nur gering Erfahrung mit OpenLDAP. Doch ich muss mich da jetzt einar...