Administratorhandbuch:Cron: Unterschied zwischen den Versionen

Aus Delixs
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(kat)
 
(12 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
__NOTOC__
__NOTOC__
{{Uberarbeiten}}
{{Archiv}}




== Zeitgesteuerte Befehle ==
== Zeitgesteuerte Befehle ==


=== 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 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 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 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 36: Zeile 36:
     2 2002-03-25 07: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.
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" ===
=== 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.
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
==== Arbeitsweise von cron ====
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
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.
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 /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


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:
  crontab -u root -e


30 20,5 * * *        /etc/ppp/inet-off  > /dev/null
wobei -e für editieren (verändern) steht. Die letzten Zeilen der Tabelle müssen dann so aussehen:


Abbildung 7.10-1b: Die Crontab für root
30 22,5 * * *        /etc/ppp/inet-off > /dev/null
00 07 * * 1-5        /etc/ppp/inet-on t-online > /dev/null
#


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:
:''Abbildung: Die letzten Zeilen der neuen Crontab''


30 22,5 * * *        /etc/ppp/inet-off
'''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.
00 07 * * *          /etc/ppp/inet-on t-online


Abbildung 7.10-2: Die letzten Zeilen der neuen Crontab
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.


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.
Sie können die Tabelle des Nutzers ''root'' um weitere Befehle erweitern. Auch jeder Nutzer darf seine eigene Tabelle bearbeiten.


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.
'''Warnung:''' Bearbeiten Sie nicht die Tabelle von ''sysadm'', es sei denn, Sie wissen genau, was Sie tun.




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

Aktuelle Version vom 16. März 2012, 10:25 Uhr


Baustelle Archiv: Dieser Artikel beschreibt nicht die Funktionalität des derzeit aktuellen delixs-Servers. Er beschreibt ältere Schulserver-Funktionen und dient dem Zweck der Archivierung.


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.



zurück | Hauptseite