Warum selber an Aufgaben denken, die zu einem bestimmten Zeitpunkt ausgeführt werden sollen, wenn einem hilfreiche Programme wie der Cron-Daemon diese Arbeit gern abnehmen? Mit der grafische Oberfläche KCron legen Sie fest, was wann zu erledigen ist.
Korner
In dieser Rubrik stellen wir Monat für Monat Tools vor, die sich bei der Arbeit unter KDE als besonders nützlich erweisen, eine Aufgabe erfüllen, die sonst geflissentlich unbeachtet bleibt, oder einfach nur zu den netten Dingen im Leben gehören, die man – einmal entdeckt – nicht mehr missen möchte.
Nicht nur in Horror-Romanen treiben Dämonen ihr Unwesen, sondern auch auf dem heimischen Rechner. Doch im Gegensatz zu den höllischen Plagegeistern der Groschenliteratur machen die Linux-Daemonen ihren Besitzern das Leben leichter: Genaugenommen kommt das Wort “Daemon” von “Disk and Execution Monitor”, einer Bezeichnung, die heute nicht mehr besonders gut verständlich macht, dass es sich dabei um Dienstprogramme handelt, die meist beim Booten gestartet werden und im Hintergrund und ohne den User zu stören ihre Arbeit verrichten.
Pünktlich zu Diensten
So auch der cron-Dämon, der nimmermüde diverse Dateien Ihres Rechners dahingehend überprüft, ob nicht ein Userlein eine Aufgabe für ihn hinterlegt hat. Wer sich schon mal mit diesem hilfreichen Geist beschäftigt hat, weiß, dass dessen Auftragsbücher eine etwas undurchsichtige Syntax verwenden [1,2]. Doch schließlich gibt es mit KCron eine passende Benutzeroberfläche, die das Übertragen von Aufgaben an cron deutlich vereinfacht.
KCron ist Bestandteil des kdeadmin-Pakets, Sie brauchen sich daher in aller Regel nicht extra um die Installation kümmern, sondern können das Programm sofort über das K-Menü via System / KCron (Aufgabenplaner) starten.
Da sich leider auch KCron neuen Nutzern nicht sofort intuitiv erschließt, erscheint zunächst einmal ein Begrüßungsbildschirm, der beschreibt, wie man eine neue Aufgabe für cron (einen Cronjob) erstellt: Klicken Sie dazu den Aufgaben-Ordner in der KCron-Oberfläche (Abbildung 1) an, und wählen Sie in der Menüleiste Bearbeiten / Neu…. Alternativ bringt Sie auch das Tastenkürzel [Strg-N] ans Ziel.
Jetzt können Sie sich nach Lust und Laune im Fenster Aufgabe bearbeiten (Abbildung 2) austoben: Wählen Sie ein Programm aus, das Sie automatisch ausführen lassen möchten, und definieren Sie die Zeiten, wann dies geschehen soll. Wer bereits einmal per Hand Cronjobs angelegt hat, dürfte ein Manko bemerken: Statt im Minutentakt lässt KCron die Aufgabenplanung nur in Fünfminutenabständen zu.
Am Beispiel
Das Festlegen der Ausführzeiten sieht erst einmal nicht so schwierig aus – kniffliger zu beantworten ist die Frage, was man im Feld Programm: eintragen soll: Sinnvollerweise stehen hier Kommandozeilenaufrufe, wie Sie sie auch in einer Shell eingeben. Aufrufe grafischer Programme über cron entpuppen sich beim näheren Hinsehen hingegen als zweischneidige Angelegenheit: Wissen Sie, ob Sie zum Ausführungszeitpunkt tatsächlich grafisch eingeloggt sind? Der cron-Daemon startet von sich aus nämlich keine grafische Oberfläche.
Prädestiniert ist cron dagegen für Aufräumarbeiten: Mit dem Befehl
find /home/stefanie -name core -exec /bin/rm {} \;
im Programm:-Feld von Abbildung 2 startet cron um 21 Uhr abends das Programm find, das das Home-Verzeichnis der Autorin (/home/stefanie) nach core-Dateien durchforstet und diese ({}) – falls vorhanden – mit dem Kommando /bin/rm löscht.
Um später die Übersicht über die einzelnen Cronjobs zu behalten, fügen Sie – auch wenn es etwas lästig erscheint – im Feld Kommentar eine kurze Beschreibung des neuen Jobs ein.
Wenn Sie sowohl Monatstag(e) als auch Wochentag(e) angeben, wird die Aufgabe künftig sowohl bei entsprechendem Datum als auch an allen passenden Wochentagen ausgeführt. Nehmen wir an, Sie wählen unter Tage im Monat den 1. und den 15. sowie unter Wochentage den Freitag aus. Dann kommt Ihr Cronjob am 1. und 15. der gewählten Monate unabhängig vom Wochentag zur Ausführung, und außerdem an jedem Freitag, egal, auf welches Datum er fällt.
Wenn Sie das (standardmäßig gesetzte) Häkchen bei Aktiviert entfernen, wird die Aufgabe zwar im System vermerkt, kommt jedoch so lange nicht zur Ausführung, wie sie deaktiviert ist. Um einen Cronjob sofort auszuführen, wählen Sie diesen im Hauptfenster aus und gehen dann zu Bearbeiten / Jetzt starten.
Erfasste Einträge finden Sie unter Angabe des Kommentars, des zu startenden Programms und der dazugehörigen Uhrzeiten im Hauptfenster wieder (Abbildung 3). Achtung: KCron übergibt eine Aufgabe erst dann ans System, wenn Sie sie über den Menüeintrag Datei / Speichern oder durch einen Klick auf das Disketten-Icon gespeichert haben.
Änderungswünsche
Bereits erstellte Cronjobs lassen sich auch nachträglich noch ändern. Markieren Sie dazu den passenden Eintrag, und begeben Sie sich danach zum Menüpunkt Bearbeiten / Ändern…. Alternativ klicken Sie mit der rechten Maustaste auf die Aufgabe und wählen aus dem Kontextmenü den Punkt Ändern… aus, oder Sie merken sich das Tastenkürzel [Strg-O]. Daraufhin erscheint wieder der bereits bekannte Dialog-Bildschirm Aufgabe bearbeiten.
KCron erlaubt es Ihnen auch, Variablen einzurichten, die die Ausführungsumgebung der Cronjobs beeinflussen. Klicken Sie dazu im Hauptfenster auf den Eintrag Variablen, und wählen Sie wie zum Erstellen einer Aufgabe den Menüeintrag Bearbeiten / Neu… an. Sie können dabei aus der Liste der am häufigsten benutzten Umgebungsvariablen wählen. Klicken Sie hierzu auf den Pfeil neben dem Feld für den Variablennamen. Bei HOME können Sie das Verzeichnis angeben, das anstelle des normalen persönlichen Verzeichnisses des Benutzers verwendet werden soll, MAILTO ändern Sie, um E-Mails aus dem aufzurufenden Programm an eine andere als die normale Adresse schicken zu lassen (Abbildung 4). PATH definiert die Pfadliste, in der cron nach ausführbaren Programmen sucht, und mit SHELL können Sie die Shell angeben, die Sie anstelle der üblichen Bash benutzen wollen. Hier einzugreifen, lohnt sich jedoch nur, wenn Sie in der Kommandozeile Shellprogrammierungsspezialitäten einer bestimmten Shell verwenden wollen.
Auch Umgebungsvariablen finden erst dann ihren Weg ins cron-Auftragsbuch, wenn die Eingaben gespeichert wurden. Das Aktivieren oder Deaktivieren einer Variablen funktioniert ebenfalls analog zur Aufgabenaktivierung: Wählen Sie die betreffende Variable an, und bestimmen Sie den gewünschten Status über den Menüpunkt Bearbeiten / Aktiviert. Bei einer deaktivierten Variablen erscheint unter Beschreibung zur besseren Unterscheidung ein Deaktiviert.
Sollten Sie sich einmal anschauen wollen, wie Ihr Aufgabenbuch für cron ohne KCrons Verschönerungsbemühungen aussieht, reicht der Befehl crontab -l in einer Kommandozeile (Abbildung 5). Diese Cron-Tabelle können Sie mit crontab -e auch händisch editieren – doch Achtung: Hier ist meist der Editor vi mit im Spiel.
Glossar
-
core-Dateien
-
Dateien mit dem Namen core enthalten letzte Speicherabzüge eines abgestürzten Programms, aus denen Programmierer die Todesursache feststellen können – für normale Nutzer im Allgemeinen nur eine Verschwendung von kostbarem Plattenplatz.
-
Umgebungsvariablen
-
Die Shell stellt in der Regel eine Umgebung zur Verfügung, in der Nutzer eigene Einstellungen vornehmen können. Dazu gehören zum Beispiel Verzeichnisse, in denen nach Programmen gesucht wird, der Benutzername, der aktuelle Pfad, das Aussehen des Prompts usw. Diese Daten werden in so genannten Umgebungsvariablen gespeichert, deren Namen meist in Großbuchstaben angegeben werden. Den Variablen lassen sich Werte, zum Beispiel Pfadnamen, zuweisen. Mit dem Befehl env fragt man die aktuelle Belegung der Variablen ab. Wichtige Umgebungsvariablen sind HOME (enthält den Pfad des Benutzerverzeichnisses), USER (Benutzername) und PATH (Suchpfad für ausführbare Dateien).
Infos
[1] Patricia Jung: “Diener auf die Minute”, LinuxUser 12/2000, S. 80 ff., http://www.linux-user.de/ausgabe/2000/12/080-cron/cron-1.html
[2] Patricia Jung: “Wem die Stunde schlägt”, Linux-Magazin 08/1998, S. 63 ff., http://www.linux-magazin.de/Artikel/ausgabe/1998/08/Cron/cron.html
[3] Jürgen Jentsch: “Pünktlich ausgeführt”, LinuxUser 06/2002, S. 81 ff.









