![]() |
|
||||||||||||||||||
|
|||||||||||||||||||
|
|||||||||||||||||||
|
||
|
TFT Monitor bei
Mercateo kaufen.
Neues Netbook? Ein Preisvergleich lohnt sich. Bei uns finden sie Notebooks, PDAs und Drucker mit Testberichten und Tipps. Diamant Buchhaltungssoftware – transparent und detailliert auch für die Konzernbuchhaltung. Günstige Shareware Programme als direkte Downloads im Software Portal. Bis zu 70% sparen durch Preisvergleich. |
||
|
von Heike Jurzik
| README |
|
At führt von Ihnen definierte Aufgaben zu einem genau festgelegten Zeitpunkt aus. Cron geht noch einen Schritt weiter und erledigt Jobs in schöner Regelmäßigkeit -- stündlich, täglich, wöchentlich und monatlich. |
Was Du heute kannst besorgen... Dinge, die Sie zu einem späteren Zeitpunkt auf einem Linux-System ausführen wollen, müssen Sie nicht umständlich notieren, um diese dann doch wieder zu vergessen: Mit dem Programm At definieren Sie sofort, was irgendwann später einmal passieren soll, und auch Cron erledigt zuverlässig immer wiederkehrende Aufgaben automatisch.
Damit diese Aufgaben pünktlich erledigt werden, werkelt im Hintergrund in beiden Fällen ein so genannter Daemon, der jede Minute nachschaut, ob es neue Aufträge gibt. Der At-Daemon heißt atd, und bei Cron ist cron(d) verantwortlich.
httpd auf, der SSH-Server heißtsshd.Sie rufen At aus der Kommandozeile heraus auf und übergeben weiterhin den Zeitpunkt, an dem At den Auftrag ausführen soll. Anschließend tippen Sie in einer Art Shell weitere Kommandos ein und beenden At danach durch Drücken der Tastenkombination [Strg]+[D]:
$ at 07:00 warning: commands will be executed using /bin/sh at> mpg321 -z /home/huhn/mp3/* at> <EOT> job 6 at 2006-01-03 07:00
Pünktlich um 7 Uhr am nächsten Morgen weckt Sie nun der Kommandozeilen-Player Mpg321, indem er Songs aus dem Verzeichnis /home/huhn/mp3/ in zufälliger Reihenfolge abspielt -- natürlich muss der Rechner dann auch eingeschaltet sein.
Den Zeitpunkt können Sie auf ganz unterschiedliche Weise angeben; die Tabelle "Zeitformate für At" listet die gebräuchlichsten Schreibweisen auf. Beachten Sie, dass At auch das Neustarten des Rechners überlebt und sich merkt, was in den nächsten sechs Monaten auf dem Plan steht.
| Zeitformate für At | |
| Format | Bedeutung |
|---|---|
16:16 | 16:16 Uhr am heutigen Tag. |
07:00pm | 19:00 Uhr am heutigen Tag (ohne Angabe von am oder pm ist immer am gemeint). |
now | Jetzt |
tomorrow | Morgen |
today | Heute |
now + 10min | In zehn Minuten; weiterhin ist die Angabe von Stunden (hours), Tage (days), Wochen (weeks) und Monaten (months) möglich. |
noon tomorrow | Um 12:00 Uhr am nächsten Tag; alternativ versteht At auch teatime (= 16:00 Uhr) oder midnight (= Mitternacht). |
6/9/06 | Am 9. Juni 2006; alternative Schreibweisen für das Datum sind z. B. 6.9.06 und 6906. |
Nach getaner Arbeit schickt At eine Mail an den Auftraggeber und berichtet über den Job (Abbildung ((1))) -- egal, ob dieser erfolgreich war oder eine Fehlermeldung verursacht hat. Damit das funktioniert, muss ein Mail-Server (zumindest für die lokale Zustellung) konfiguriert sein. Für Kommandos, die standardmäßig keine Ausgabe erzeugen, wie beispielsweise rm, mv oder cp, erzwingen Sie die Benachrichtigung per E-Mail. Dazu geben Sie beim Start die Option -m an, etwa at -m 13:31.
Alle At-Kommandos, die noch auf ihre Ausführung warten, finden Sie in der Warteschlange wieder. Diese zaubern Sie auf den Bildschirm, wenn Sie at -l oder atq aufrufen:
$ atq 7 2006-01-03 07:00 a huhnix 11 2006-01-03 12:00 a huhnix 12 2006-06-09 14:24 a huhnix
Leider gibt sich At an dieser Stelle nicht besonders informativ und verrät lediglich die Job-Nummer am Zeilenanfang, das Datum und die Uhrzeit, den Namen der Warteschlange (a) und den Benutzernamen. Welcher Befehl da aber auf seine Ausführung wartet, das lässt die Liste im Dunkeln. Als normaler Benutzer sehen Sie außerdem nur die eigenen Jobs; lediglich der Systemadministrator erhält eine vollständige Liste aller wartenden Aufträge.
Wer ganz genau wissen will, was die Zukunft bringt, schaut als Administrator ins Verzeichnis der At-Jobs unter /var/spool, zum Beispiel /var/spool/atjobs/ (bei Suse Linux) oder /var/spool/cron/atjobs/ (unter Debian) -- die Textdateien verraten u. a. ganz am Ende, welcher Befehl ausgeführt wird.
Um einen At-Auftrag wieder zu löschen, geben Sie den Befehl at -d oder entsprechend atrm unter Angabe der Job-Nummer ein:
$ atrm 7 11 $ atq 12 2006-06-09 14:24 a huhnix
Die beiden Dateien /etc/at.allow und /etc/at.deny regeln, wer mit At arbeiten darf. Auf den meisten Distributionen existiert lediglich die Datei at.deny, die einiige "Pseudobenutzer", wie lp (für den Drucker-Daemon) oder mail (für den Mail-Daemon), enthält. Wenn Sie als Administrator eine Datei at.allow anlegen, dürfen ausschließlich die dort aufgeführten Benutzer At verwenden -- at.deny wird in dem Fall nicht ausgewertet.
Wer regelmäßig Jobs zu vergeben hat, muss nicht jedes Mal wieder einen At-Aufruf starten -- Linux bringt für diese Fälle bereits eine Lösung mit: Cron arbeitet ebenfalls im Hintergrund und führt regelmäßig Befehle aus. Auch dieses Programm braucht lediglich einen laufenden Rechner und "merkt" sich Aufträge, wenn Sie die Maschine rebooten. Die beiden Programme haben noch mehr Gemeinsamkeiten: Ebenso wie At berichtet Cron per E-Mail an den jeweiligen Account, dass ein Auftrag erfolgreich ausgeführt wurde.
Die einzelnen Aufträge heißen Cronjobs; diese verwalten Sie in der so genannten Crontab. In dieser Tabelle beschreiben Sie in insgesamt sechs Spalten, wann ein bestimmter Befehl auszuführen ist. Jedem Kommando wird dabei eine einzige Zeile zugewiesen. Die ersten fünf Felder beschreiben jeweils den Zeitpunkt; das sechste Feld enthält das auszuführende Programm mitsamt aller Parameter.
Eine solche Crontab legen Sie als Benutzer auf der Kommandozeile mit dem gleichnamigen Programm Crontab an. Dazu dient der Aufruf crontab -e; der Parameter -e signalisiert, dass Sie die Tabelle bearbeiten möchten.
Als Systemverwalter dürfen Sie darüber hinaus die Crontabs aller Benutzer verändern; dazu geben Sie zusammen mit dem Parameter -u den gewünschten Account-Namen an:
crontab -u huhn -e
Standardmäßig startet nun der Editor Vi -- wer lieber einen anderen Text-Editor verwendet, setzt die Umgebungsvariable $EDITOR, etwa:
export EDITOR=/usr/bin/kwrite
Um das Verhalten dauerhaft zu machen, tragen Sie diese Zeile in die Konfigurationsdatei der Bash ein und lesen diese mit dem Befehl source ~/.bashrc neu ein.
Die einzelnen Zeilen der Crontab dürfen keinen Umbruch enthalten; Kommentare in dieser Datei erkennen Sie an einem Rautezeichen am Zeilenanfang. In den sechs Feldern stehen der Reihe nach die folgenden Informationen:
0 bis 59 möglich; alternativ der Platzhalter *0 bis 23 oder *1 bis 31 oder *1 bis 12, Jan bis Dec, jan bis dec oder *0 bis 7 (wobei sowohl die 0 als auch die 7 für "Sonntag" stehen), Sun bis Sat, sun bis sat oder *Wer sich jeden Morgen um 7 Uhr mit Musik wecken lassen möchte, fügt beispielsweise einen Eintrag der Form
0 7 * * * mpg321 -z /home/huhn/mp3/*
hinzu. In den einzelnen Feldern dürfen auch Werte durch Kommata voneinander abgetrennt stehen. Um den musikalischen Wecker am Samstag und Sonntag verstummen zu lassen, tragen Sie also beispielsweise im fünften Feld für den Wochentag
0 7 * * 1,2,3,4,5 mpg321 -z /home/huhn/mp3/*
ein. Alternativ geben Sie einen Bereich an, indem Sie einen Bindestrich einsetzen (1-5). Übersichtlicher ist es, die Wochentage beim Namen zu nennen:
0 7 * * mon-fri ...
Ebenfalls praktisch ist die Kombination von Zeiträumen: Steht beispielsweise im vierten Feld für den Monat 1-4,7,10-12, bedeutet das "Januar bis April, Juli, Oktober bis Dezember". Mit einem Schrägstrich und einer nachgestellten Ziffer definieren Sie weiterhin regelmäßige Zeiträume; so bedeutet */2 in der zweiten Spalte beispielsweise "alle zwei Stunden" und 1-6/2 steht für "1,3,5".
Sämtliche Cron-Tabellen der Benutzer liegen im Verzeichnis /var. Dabei sortiert jede Distribution die Tabellen anders: Debian schreibt sie beispielsweise nach Benutzernamen sortiert nach /var/spool/cron/crontabs/, Suse Linux ordnet sie unter /var/spool/cron/tabs/ ein.
Da Sie als normaler Benutzer dort keine Leserechte haben, zeigen Sie Ihre eigene Crontab auf der Kommandozeile mit dem gleichnamigen Programm an:
$ crontab -l 10 8 * * mon-fri mpg321 -z /home/huhn/mp3/*
Um einzelne Einträge zu löschen, rufen Sie wiederum den Editor mit crontab -e auf; wer direkt die ganze Tabelle löschen will, nimmt stattdessen crontab -r zu Hilfe.
Cron erledigt nicht nur die persönlichen Listen sämtlicher Benutzer, sondern hilft auch bei der Systemadministration. Werfen Sie als Administrator einen Blick in die Datei /etc/crontab, dann sehen Sie, welche Aufgaben Ihnen das Programm von Hause aus abnimmt. Je nach Distribution sieht die systemweite Crontab anders aus; bei Debian stehen hier beispielsweise Einträge wie in Listing 1 zu finden.
| Listing 1 |
17 * * * * root run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily 47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly 52 6 1 * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly |
Im Gegensatz zu den Benutzer-Crontabs gibt es hier ein siebtes Feld, welches den User-Namen des Benutzers enthält, mit dessen Rechten der Befehl ausgeführt wird -- in der Regel ist das root. Die Aufgabenliste verrät unter anderem: Immer 17 Minuten nach der vollen Stunde führt der Cron-Daemon mit Administratorrechten das Kommando run-parts --report /etc/cron.hourly aus, und an jedem Ersten des Monats um 6:52 Uhr läuft run-parts --report /etc/cron.monthly. Tägliche Aufgaben (die ausführbaren Skripte in /etc/cron.daily) reledigt Cron um 6:25 Uhr: Hier finden Sie etwa das Skript logrotate, welches Logfiles rotiert, komprimiert und sortiert.
Läuft Ihr Rechner nicht 24 Stunden am Tag, so kann es sinnvoll sein, als Administrator diese Einträge anzupassen und Uhrzeiten einzugeben, an denen Sie genau wissen, dass der Rechner eingeschaltet ist:
25 17 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
Es gibt zahlreiche grafische Programme, die Ihnen beim Erstellen einer eigenen Cron-Tabelle unter die Arme greifen (Abbildung ((2))). Gnome-Benutzer finden in Gcrontab ein übersichtliches und leicht zu bedienendes Programm, das mit wenigen Mausklicks eigene Aufgabenlisten zusammenstellt. Alternativ bietet sich das KDE-Tool KCron an, welches etwas leichter zu bedienen ist, allerdings fertige Einträge nicht in der Cron-Syntax anzeigt -- ein Lerneffekt stellt sich hier nicht ein (Abbildung ((2))). Letztendlich bietet hier -- wie so oft -- die Kommandozeile mehr Flexibilität, und die Einträge lassen sich schneller tippen als "zurechtklicken". (jlu)
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.
Druckerfreundliche Version |
Feedback zu dieser Seite
|
Datenschutz |
© 2010 Linux New Media AG
[Linux-Magazin]
[LinuxUser]
[EasyLinux]
[Linux-Community]
[Ubuntu User]
[Linux Technical Review]
[Linux Magazine]
[Linux Pro Magazine]
[Ubuntu User]
[EasyLinux Poland]
[Linux Magazine Poland]
[Linux Magazine Brasil]
[EasyLinux Brasil]
[Linux Magazine Spain]