Administratorhandbuch:Cron
Seite fertig: Sollten Sie Änderungvorschläge oder Ergänzungen zu diesem Punkt haben, dann nutzen Sie bitte den Punkt Diskussion (oben). |
Zeitgesteuerte Befehle
einzelne Jobs ausführen mit at
Manchmal müssen Sie einen Befehl zu einem bestimmten Zeitpunkt ausführen lassen. Das kann zum Beispiel sein, dass der Internetzugang an einem Tag der offenen Tür freigegeben werden soll, aber Sie sind nicht da. Auch für Backups oder gössere Downloads, die einmalig in der Nacht laufen sollen, lohnt sich die Nutzung eines "at-Jobs".
Um einen solchen Job anzulegen, können Sie sich zweier Möglichkeiten bedienen: Entweder schreiben Sie die Befehle in eine Datei oder Sie geben die Liste der Befehle von Hand ein. Den Job selbst tragen Sie mit dem Befehl "at" und der Angabe des Zeitpunktes ein. Für die Beschreibung des Zeitpunktes gibt es wiederum viele Möglichkeiten, gemeinsam ist nur, dass die Zeitangabe am Anfang stehen muss.. Für das erste Beispiel nehmen wir an, heute Abend um 22:30 Uhr soll ein Mailaustausch erfolgen. Der entsprechende Befehl steht in der Datei /root/mail-befehl :
root@Arktur:~# at 22:30 /root/mail-befehl job 1 at 2002-02-24 22:30
Die zweite Zeile stellt die Antwort des Servers dar.
Im zweiten Beispiel soll am 25.03.2002 um 7.30 Uhr das Internet über den Provider "t-online" geöffnet werden. Da keine Befehlsdatei existiert, soll der Befehl direkt eingegeben werden:
root@Arktur:~# at 7:30 25.03.02 warning: commands will be executed using /bin/sh at> /etc/ppp/inet-on t-online at> <EOT> job 2 at 2002-03-25 07:30
Es können mehrere Befehle nacheinander eingegeben werden. Nach der Eingabe des letzten Befehls muss mit der Tastenkombination [STRG] + [D] die Eingabe beendet werden. Statt des Datums kann die Zeitangabe auch relativ erfolgen. Statt übermorgen,um 12:30 Uhr kann man als Befehl schreiben:
at 12:30 + 2 days
Die eingegebenen Jobs werden in einer Warteschlange gespeichert. Außer root dürfen auch alle anderen Nutzer solche Jobs anlegen, außer die in der /etc/at.deny aufgelisteten Nutzer. Von den Nutzern angegebene at-Jobs werden auch nur mit den Benutzerrechten ausgeführt.
Damit der Job auch gestartet wird, muss der Daemon "atd" gestartet sein. Da Arktur auch beim Schließen der Internet-Verbindung nach der eingetragenen Zeit den at-Daemon nutzt, sollten Sie diesen Dienst nicht deaktivieren. Wollen Sie die eingetragenen Jobs sehen, hilft der Befehl "atq":
root@Arktur:~# atq 1 2002-02-24 22:30 a root 2 2002-03-25 07:30 a root
Wir finden also die beiden aktivierten Jobs in der Liste. Wollen Sie einen Job wieder entfernen, hilft der Befehl "atrm" gefolgt von der Jobnummer. Der Superuser root darf jeden at-Job löschen, die anderen Nutzer nur ihre eigenen Jobs.
sich wiederholende Jobs mit cron
Vielfach sollen aber sich wiederholende Jobs ausgeführt werden. Dafür sorgt der Daemon "crond", der ebenfalls beim Systemstart aktiviert wird und der wichtige Aufgaben im Server übernimmt. Eine Reihe von Aufträgen hat dieser Daemon schon bekommen, die Sie bei der Bearbeitung der Tabellen nicht entfernen sollten. Vielmehr ist es meist wünschenswert, die Aufgaben zu erweitern.
Grundsätzlich kann jeder Nutzer von Arktur solche Auftragstabellen erstellen. Die Aufträge werden dann mit den Rechten und der Umgebung dieses Nutzers durchgeführt. Erzeugt der Job Ausgaben, werden die an den Auftraggeber per E-Mail zugestellt. Im Dateisystem von Arktur finden Sie die Tabellen als Dateien mit dem Namen des Nutzers im Verzeichnis "/var/spool/cron/tabs". In der Datei "/var/spool/cron/deny" können Sie einzelnen Nutzern das Recht entziehen, solche Cron-Tabellen anzulegen.
Achtung: Bearbeiten Sie die Tabellen nie mit einem Editor direkt im Verzeichnis. Der Daemon wird sonst nicht über die Änderungen informiert und die Jobs laufen wie vereinbart weiter.
Arbeitsweise von cron
Schauen wir uns eine frei erfundene Tabelle an.
-5,20,35,50 * * * * /verzeichnis/job.OFT < /dev/null 10 2 * * * /verzeichnis/job.TAG < /dev/null 10 3 * * mon /verzeichnis/job.WOCHE < /dev/null 10 4 1 * * /verzeichnis/job.MONAT < /dev/null 10 5 1 mar,sep * /verzeichnis/job.HALBJAHR < /dev/null
- Abbildung: Aufbau einer Crontab
Die Tabelle besteht virtuell aus sechs Spalten, die nicht direkt untereinander stehen müssen. Die erste Spalte steht für den (oder die) Minutenwert(e), die zweite für die Stundenwerte, die dritte für den Tag des Monats, die vierte für den Monat und die fünfte für den Wochentag. Die sechste Spalte schließlich nimmt den Befehl auf, der ausgeführt werden soll.
Zeile 1: Hier wird festgelegt, dass täglich in jeder Stunde (* steht für jede beliebigen Wert, hier für jede Stunde, jeden Tag, jeden Monat und jeden Wochentag) in den Minuten 5,20,35 und 50 der Befehl /verzeichnis/job.OFT aufgerufen wird. Ein voran gestelltes Minus verhindert eine Mail an den Nutzer, der sonst immer einen Bericht per Mail zugestellt bekommt.
Zeile 2: Täglich um 2.10 Uhr wird der Befehl /verzeichnis/job.TAG abgearbeitet.
Zeile 3-5: An jedem Montag (fünfte Spalte mon) um 3.10 Uhr läuft job.WOCHE ab, an jedem ersten (in Spalte 3 steht die 1) des Monats job.MONAT und am 1. März sowie 1. September läuft job.HALBJAHR.
Systemeigene cron-Befehle
Obwohl Sie nichts am Server tun und auch kein Nutzer angemeldet ist, fängt die Festplatte im Arktur-Schulserver manchmal an, für einige Minuten sehr aktiv zu sein. Dann führt der Server systemeigene Wartungsarbeiten durch. Wann das geschieht, können Sie in der Datei "/etc/crontab" sehen. Diese Datei hat einen etwas anderen Aufbau, als eine normale cron-Tabelle eines Nutzers. Sie sollten diese Datei nicht verändern, denn damit könnte die Stabilität ihres Servers gefährdet werden.
Eigene cron-Befehle
Schauen wir uns nun die Tabelle von root an. Nutzen Sie als root den Befehl
crontab -u root -l
wobei mit -u der Nutzername angegeben wird und -l für list steht und Sie erhalten:
30 20,5 * * * /etc/ppp/inet-off > /dev/null
- Abbildung: Die Crontab für root
Täglich um 20.30 Uhr und um 5.30 Uhr wird der Internet-Zugang geschlossen. Ist in Ihrer Schule zum Beispiel eine Volkshochschule, die auch nach 20.30 Uhr das Internet nutzen will, muss dieser Job verändert werden. Nehmen wir an, der Server soll jeden Wochentag um 7.00 Uhr das Internet über den Provider "t-online" öffnen und statt 20.30 Uhr um 22.30 Uhr (und sicherheitshalber nochmals um 5.30 Uhr) das Internet schließen. Bearbeiten Sie die Tabelle mit dem Befehl
crontab -u root -e
wobei -e für editieren (verändern) steht. Die letzten Zeilen der Tabelle müssen dann so aussehen:
30 22,5 * * * /etc/ppp/inet-off > /dev/null 00 07 * * 1-5 /etc/ppp/inet-on t-online > /dev/null #
- Abbildung: Die letzten Zeilen der neuen Crontab
Achtung: Bitte vergessen Sie nicht, die letzte Zeile mit einem "Enter" abzuschließen, da sie sonst nicht ausgeführt wird. Alternativ können Sie in der letzten Zeile auch ein Raute-Zeichen (#) setzen.
Damit wird nun das Internet Montag bis Freitag (Tage 1-5) um 7.00 Uhr (00 07) freigegeben. Fließen dann ca. 10 Minuten lang keine Daten ins Internet, legt Arktur auf und geht in den Modus "Standby". Sobald eine Anfrage ins Internet geht, wird die Internet-Verbindung wieder aufgebaut und die angeforderten Seiten geholt. Auf diese Weise werden eventuell Online-Kosten gespart, aber vor allem wird auch die zur Verfügung stehende Zeit für Angriffe auf Ihren Server aus dem Internet heraus verringert.
Sie können die Tabelle des Nutzers root um weitere Befehle erweitern. Auch jeder Nutzer darf seine eigene Tabelle bearbeiten.
Warnung: Bearbeiten Sie nicht die Tabelle von sysadm, es sei denn, Sie wissen genau, was Sie tun.