Diener auf die Minute
Jobs mit Cron abarbeiten
Wie hält er's mit den Usern, sprich?
Während die Systemadministratorin in der systemweiten /etc/crontab peinlich selbst darauf achten muss, den Syntax-Ansprüchen des Cron-Daemons zu genügen, hat sie es leichter, wenn sie roots private Cron-Tabelle ändern will. Benutzerspezifische Wunschlisten an den Cron-Daemon werden – wie eingangs erwähnt – mit dem Programm crontab erstellt und gewartet.
Außer root hat kein User überhaupt die Möglichkeit, seine private Cron-Tabelle per Hand zu bearbeiten. Da der Cron-Daemon jede Minute angerückt kommt, um nach seinen Aufgaben zu sehen, vermeidet man so, dass ein unbedarfter Benutzer eine halbfertige oder syntaktisch vollkommen falsche Liste erstellt.
Tabelle 4: Wo stecken die persönlichen Cron-Tabellen?
|
Auch beim Verzeichnis, in dem die privaten Crontab-Dateien der User zu finden sind, herrscht fröhliche Uneinigheit unter den Distributoren. Immerhin können sich außer SuSE fast alle ein "Unterhalb von | |
|---|---|
| Debian 1.3.1 ff. | /var/spool/cron/crontabs/ |
| Red Hat 4.2 | /var/spool/cron/ |
| Red Hat 5.0 | /var/spool/cron/crontabs/ |
| Red Hat 6.2 | /var/spool/cron/ |
| Caldera OpenLinux 1.2 ff. | /var/spool/cron/ |
| SuSE 4.4 ff. | /var/cron/tabs/ |
| Slackware 3.4 | /var/spool/cron/crontabs/ |
Stattdessen legt crontab eine Kopie der alten Crontab an, die die Benutzerin im von crontab automatisch aufgerufenen Editor verändern darf. Erst wenn sie den Editor endgültig schließt, führt crontab ein paar Syntaxprüfungen aus, bittet die Benutzerin ggf. um Korrektur und ersetzt zum Schluss die alte Cron-Tabelle durch die geänderte.
So hilfreich diese Kontrollinstanz ist – Wunder sollte man nicht erwarten. Zum einen überprüft crontab wirklich nur, ob die richtige Anzahl Spalten vorhanden sind (versehentlich eingefügte Leerzeichen u. a. machen eine neue Spalte auf) und ob die Angaben in den Zeitspalten plausibel sind. Einen Eintrag wie
88 4 * * * asdadad
(Achtung: Da private Crontabs immer spezifisch für einen User sind, fehlt die Spalte mit dem Benutzernamen!) mahnt crontab beim Abspeichern zwar mit dem Hinweis auf die falsche Minute ("bad minute") an:
crontab: installing new crontab "/tmp/crontab.XXXXVYM64K":0: bad minute errors in crontab file, can't install. Do you want to retry the same edit?
Doch sobald man mit einem y wie "yes" reumütig zum Editor zurück kehrt und aus der 88 eine 8 macht, wird crontab die alte Crontabelle klaglos mit der neuen ersetzen, so wenig ein Kommando asdadad auch existieren mag.
Solange crontab jedoch syntaktische Fehler ausmachen kann, lässt es sich nicht so ohne weiteres überlisten. Hätten wir auf die Frage "Möchten Sie Ihre Änderungen noch einmal überarbeiten?" mit einem n geantwortet, wäre die temporäre Datei /tmp/crontab.XXXXVYM64K zwar erhalten geblieben, die Änderungen jedoch nicht in die echte Crontabelle übertragen worden.
Der Widerspenstigen Zähmung
Wie man mit man crontab erfährt, könnte man diese Datei mit einem Editor seiner Wahl in Ruhe korrigieren und mit
crontab /tmp/crontab.XXXXVYM64K
doch noch zu Ehren kommen lassen. Genausogut kann man jede andere vorgefertigte Datei zu installieren versuchen. Auch wenn sich diese Vorgehensweise sicher dazu eignet, eine sorgfältig erstellte Crontabelle nach einer Neuinstallation o. ä. wieder einzuspielen, wird man doch in der Regel zu
crontab -e
greifen, um seine private Cron-Tabelle zu editieren oder neu anzulegen. Hier kann es nicht schaden, die Grundlagen des vi-Editors zu kennen (mit der Tastenfolge ESC : q ! kommt man ohne Speichern wieder raus), denn der ist in der Regel voreingestellt.
Wer diesen nicht mag, kann mit einer der (Shell-, nicht Cron-) Umgebungsvariablen EDITOR oder VISUAL seinen Lieblingseditor festlegen. Arbeitet man unter KDE, gibt man z. B. die Befehlsfolge
export EDITOR=kedit crontab -e
in einem Terminal-Fenster an. Nach dem Ausloggen oder in der Regel auch in einem anderen X-Terminal ist der neue Wert von EDITOR dann natürlich verschwunden.
Wer ihn dauerhaft haben möchte, schreibt die export-Zeile z. B. in die Datei .bashrc oder .bash_profile im Home-Verzeichnis. Für X-Terminals, die über einen Menüpunkt oder ein Icon aufgerufen werden, kann hier ein wenig Experimentieren erforderlich sein.
Allerdings sollte man beim dauerhaften Ändern dieser Variablen vorsichtig sein: Auch andere Programme richten sich danach, und wer kommt schon gleich auf die Idee, dass ein in der Textkonsole gestartetes Tool deshalb aufgibt, weil sich ein grafischer Editor nun mal nur unter X starten lässt? Für den Notfall sei hier auch das Gegengift erwähnt:
unset EDITOR
bringt die Variable wieder in den (nicht gesetzten) Urzustand, und export EDITOR=mcedit setzt stattdessen den vom Midnight Commander mc benutzten Editor, der ohne X auskommt.
So nützlich crontab also ist: Völlig unbedarftes Herangehen ist nicht unbedingt Erfolg versprechend. Eine gewisse Vereinfachung versprechen grafische Crontab-Editoren, denen wir uns im nächsten (Erscheinungs-)Jahr widmen. Wer trotz allem an seiner Crontabelle verzweifelt: Ein
crontab -r
(wie "remove") löscht sämtliche Einträge unweigerlich.
Glossar
man 5
Wie in der Rubrik "Zu Befehl" im LinuxUser 02/2000 ausführlich erklärt, sind die Manpages nach Anwendungsgebiet in sogenannte Sektionen gegliedert. Mit crontab z. B. können zwei verschiedene Dinge gemeint sein: das Programm oder die Datei. Informationen zu ersterem findet man in Sektion 1 mit dem Befehl man 1 crontab oder kurz man crontab. Die Manpage zur Datei namens crontab hingegen ist in Sektion 5, also mit man 5 crontab, zu finden. In welchen Sektionen man etwas über crontab findet, erfährt man mit man -f crontab.
Shellskripte
Die Shell, ihres Zeichens Vermittlerin zwischen der Benutzerin an der Kommandozeile und dem Betriebssystemkern, bietet – je nachdem, welches Programm man dafür verwendet – oft weitreichende Manipulationsmöglichkeiten. Dazu gehört bei Kommandozeileninterpretern wie der unter Linux meist standardmäßig eingestellten Bash eine eingebaute Programmiersprache. Damit erstellte Programme heißen Skripte, da sie nicht erst mit einem extra Compiler in ein ausführbares Programm übersetzt werden müssen, sondern direkt von der Shell interpretiert werden.
Postings
Ein Posting ist ein Beitrag in einer News-Gruppe oder auf einer Mailingliste.
System-Log
Der Kernel und wichtige Systemprogramme lassen ihre Aktivitäten und Fehlerfälle vom "Kernel-Log-Dämon" klogd bzw. vom "System-Log-Daemon" syslogd mitprotokollieren. Aus diesen Logfiles (meist unter /var/log/ zu finden) kann die Systemadministratorin bei Problemen Rückschlüsse ziehen.
.
<B Der Punkt ist eine Abkürzung für das aktuelle Verzeichnis. Dies ist gerade beim Cron-Daemon mit seiner ungeschränkten Verfügungsgewalt eine recht gefährliche Pfadangabe.
Infos
[1] Artikel zu Cron aus dem Linux-Magazin 08/1998, S. 63 http://www.linux-magazin.de/ausgabe/1998/08/Cron/cron.html



