Administratorhandbuch:Cron: Unterschied zwischen den Versionen

Aus Delixs
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 9: Zeile 9:
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".
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, 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 :
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
     root@Arktur:~# at 22:30 /root/mail-befehl
Zeile 42: Zeile 42:
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.
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.
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.


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:
'''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.


  5,20,35,50 * * * *  /usr/lib/ods-server/cron/job.OFT < /dev/null
Schauen wir uns eine frei erfundene Tabelle an.
 
  -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 2 * * *          /usr/lib/ods-server/cron/job.TAG < /dev/null
  10 3 * * mon        /usr/lib/ods-server/cron/job.WOCHE < /dev/null
  10 3 * * mon        /usr/lib/ods-server/cron/job.WOCHE < /dev/null
Zeile 52: Zeile 54:
  10 5 1 mar,sep *    /usr/lib/ods-server/cron/job.HALBJAHR < /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
:''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.
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.
'''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 /usr/lib/ods-server/cron/job.OFT aufgerufen wird. Ein voran gestelltes Minus verhindert eine Mail an den Nutzer, der sonst immer einen Bericht per Mail zugestellt bekommt.


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:
 
'''Zeile 2:''' Täglich um 2.10 Uhr wird der Befehl /usr/lib/ods-server/cron/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 (Spalte 3 ist 1) des Monats job.MONAT und am 1. März sowie 1. September läuft job.HALBJAHR.
 
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
  30 20,5 * * *        /etc/ppp/inet-off  > /dev/null


Abbildung 7.10-1b: Die Crontab für root
:''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:


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: (Bitte nicht vergessen, die letzte Zeile mit einem "Return" abzuschließen, da sie sonst nicht ausgeführt wird.)
30 22,5 * * *        /etc/ppp/inet-off > /dev/null
00 07 * * 1-5       /etc/ppp/inet-on t-online > /dev/null


30 22,5 * * *        /etc/ppp/inet-off
:''Abbildung: Die letzten Zeilen der neuen Crontab''
00 07 * * *          /etc/ppp/inet-on t-online


Abbildung 7.10-2: 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.


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.
Damit wird nun das Internet Montag bis Freitag (1-5) 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.
Sie können die Tabelle um weitere Befehle erweitern. Bearbeiten 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.




----
----
<div align="right">[[Administratorhandbuch|zurück]] | [[Hauptseite]]</div>
<div align="right">[[Administratorhandbuch|zurück]] | [[Hauptseite]]</div>

Version vom 22. November 2005, 20:43 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 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.

Schauen wir uns eine frei erfundene Tabelle an.

-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: 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 /usr/lib/ods-server/cron/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 /usr/lib/ods-server/cron/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 (Spalte 3 ist 1) des Monats job.MONAT und am 1. März sowie 1. September läuft job.HALBJAHR.

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.

Damit wird nun das Internet Montag bis Freitag (1-5) 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.

Sie können die Tabelle um weitere Befehle erweitern. Bearbeiten 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