Administratorhandbuch:Cron: Unterschied zwischen den Versionen

Aus Delixs
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 7: Zeile 7:
=== einzelne Jobs ausführen mit "at" ===
=== einzelne Jobs ausführen mit "at" ===


Manchmal müssen Sie einen Befehl zu einem bestimmten Zeitpunkt ausführen lassen. Das kann zum Beispiel sein, das der Internetzugang an einem Tag der offenen Tür freigegeben werden soll, aber Sie sind nicht da. Auch für Backups, die einmalig in einer bestimmten Nacht laufen sollen, lohnt sich die Nutzung eines "at-Jobs".
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, die einmalig in einer bestimmten 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 Zeitpunkts ein. Für die Beschreibung des Zeitpunkts gibt es wiederum viele Möglichkeiten, gemeinsam ist nur, das 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 :
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 Zeitpunkts ein. Für die Beschreibung des Zeitpunkts gibt es wiederum viele Möglichkeiten, gemeinsam ist nur, das 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 :

Version vom 15. August 2005, 14:53 Uhr

Uberarbeiten Diese Seite sollte nochmals überarbeitet werden. Eine Begründung befindet sich in der Regel unter 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, die einmalig in einer bestimmten 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 Zeitpunkts ein. Für die Beschreibung des Zeitpunkts gibt es wiederum viele Möglichkeiten, gemeinsam ist nur, das 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 Spueruser 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/cron/tabs. Mit der Datei /var/cron/deny können Sie einzelnen Nutzern das Recht entziehen, solche Cron-Tabellen anzulegen. Achtung! Bearbeiten Sie nicht die Tabellen direkt im Verzeichnis. Der Daemon wird sonst nicht über die Änderungen informiert und die Jobs laufen wie vereinbart weiter.

Schauen wir uns die Tabelle von sysadm einmal an. Nutzen Sie als root den Befehl "crontab -u sysadm -l" (l für list) und Sie erhalten:

5,20,35,50 * * * *   /usr/lib/ods-server/cron/job.OFT < /dev/null
10 2 * * *           /usr/lib/ods-server/cron/job.TAG < /dev/null
10 3 * * mon         /usr/lib/ods-server/cron/job.WOCHE < /dev/null
10 4 1 * *           /usr/lib/ods-server/cron/job.MONAT < /dev/null
10 5 1 mar,sep *     /usr/lib/ods-server/cron/job.HALBJAHR < /dev/null

Abbildung 7.10-1a: Die Crontab für sysadm

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.

In diesem Beispiel wird in der ersten Zeile 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 /usr/lib/ods-server/cron/job.OFT aufgerufen wird, der zum Beispiel die Dienste des Newsservers überwacht und wenn nötig die Datenbank des NIS-Systems aktualisiert. Täglich um 2.10 Uhr wird der Befehl /usr/lib/ods-server/cron/job.TAG abgearbeitet. An jedem Montag (fünfte Spalte mon) um 3.10 Uhr läuft job.WOCHE ab, an jedem ersten (Spalte 3 ist 1) des Monats job.MONAT und am 1.März sowie 1.September läuft job.HALBJAHR. Diese Tabelle sollten Sie nicht von Hand ändern. Eventuelle Updates gehen von einer unveränderten Tabelle aus.

Schauen wir uns nun die Tabelle von root an. Nutzen Sie als root den Befehl "crontab -u root -l" (l für list) und Sie erhalten:

30 20,5 * * *        /etc/ppp/inet-off  > /dev/null

Abbildung 7.10-1b: 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 Tag um 7.00 Uhr das Internet über den Provider "t-online" öffnen und statt 20.30 Uhr um 22.30 Uhr (und wie gewohnt um 5.30 Uhr) das Internet schließen. Bearbeiten Sie die Tabelle mit dem Befehl "crontab -u root -e". Die letzten Zeilen der Tabelle müssen dann so aussehen:

30 22,5 * * *        /etc/ppp/inet-off
00 07 * * *          /etc/ppp/inet-on t-online

Abbildung 7.10-2: Die letzten Zeilen der neuen Crontab

Damit wird nun das Internet um 7.00 Uhr freigegeben. Fließen dann ca. 10 Minuten lang keine Daten ins Internet, legt Arktur die Telefonleitung auf und geht in den Modus "Standby". Sobald eine Anfrage ins Internet geht, wird die Telefon- oder ADSL-Verbindung wieder aufgebaut und die angeforderten Seiten geholt. Auf diese Weise werden eventuell Online-Kosten gespart, aber vor allem auch die Zeit für Angriffe aus dem Internet verringert.

Wenn Sie wollen, können Sie die Tabelle um weitere Befehle erweitern. Barbeiten Sie bitte nur die crontab von root mit der Hand, nicht die von sysadm, es sei denn, Sie wissen genau, was Sie tun. Es kann sonst sein, dass wichtige Jobs nachts nicht mehr ausgeführt werden und letztlich die Funktion des Servers beeinträchtigt wird.



zurück | Hauptseite