29.03.2024, 09:14 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]

Der Cron-Daemon

Ebenfalls verwendete Begriffe: cronjobs, Cron-Dämon,...
(cron, cronos -> griech. für Zeit; Cronos war in der greichischen Mythologie der Gott, welcher über die Zeit herrschte)


Da an verschiedenen Stellen schon öfters nachgefragt wurde, hier mal eine sinnvolle Auflistung der Funktionen des Cron-Daemons:

Folgender Text wurde kopiert und angepasst von http://www.linux-fuer-alle.de/doc_show.php?docid=45&catid=15:



Der Cron-Daemon ist ein Programm, welches im Hintergrund läuft und zu bestimmten Zeiten andere Programme ausführen kann. Dies ist besonders dann von Vorteil, wenn man leicht automatisierbare Aufgaben zu erledigen hat, wie etwa das Erstellen einer Sicherheitskopie von wichtigen Daten. In diesem Artikel findest du ein einfaches Beispiel, wie man dem cron mitteilt, wann er eine Aufgabe erledigen soll. Bei den meisten Distributionen wird gar nicht erst gefragt, ob du den cron haben willst. Der ist dann einfach mit dabei. Ob das gut ist oder nicht, ist eine andere Thematik. Aber so kannst du das hier Vorgestellte wenigstens gleich ausprobieren.

Zunächst einmal ist es sinnvoll, einen Test zu machen, bevor man schwerwiegende und umfangreiche Programmstarts durchführt. Hier soll ein kleines Script dazu dienen, die Aktivität des cron nachzuvollziehen:

#!/bin/bash

date >> $HOME/CRON-DATEI.txt

exit 0


Nachdem man nun den obigen Text in einer Datei namens "cronscript.sh" abgespeichert hat, muss man noch sicherstellen, dass diese auch ausführbar ist:

# chmod 755 cronscript.sh


Der Einfachheit halber lässt du diese Datei für diesen Test in deinem Home-Verzeichnis. Ein richtiges Backup-Script würde man natürlich in den ausführbaren Pfad kopieren, also etwa nach /usr/bin oder so. Wenn das Script nicht in einem der Verzeichnisse ist, welche durch Eingabe von

# echo $PATH


angezeigt werden, dann muss man den kompletten Pfad zum Script mit angeben. Nun soll es darum gehen, eine so genannte "crontab" anzulegen. Die crontab ist quasi die Tabelle bzw. Datei in der steht, wann der cron welches Kommando ausführen soll. Bei fast allen gängigen Linux-Distributionen kannst du deine persönliche crontab verändern, indem du als normaler User

# crontab -e


eingibst. Dann erscheint ein voreingestellter Editor und zeigt wahrscheinlich eine leere Datei, wenn du noch keine crontab hast. Wenn dir der Editor nicht passt, dann gib doch einfach

# export EDITOR=emacs


ein. - Du kannst hier "emacs" natürlich auch durch jeden anderen Editor ersetzen, der bei dir läuft. - Was muss in die crontab jetzt rein? Die Syntax einer Zeile der crontab sieht folgendermaßen aus:

MINUTE STUNDE TAG MONAT WOCHENTAG BEFEHL


Dabei gilt:

Platzhalter Mögliche Werte
MINUTE 0-59
STUNDE 0-23
TAG 1-31
MONAT 1-12
WOCHENTAG 0-6, wobei 0 Sonntag bedeutet
BEFEHL Dies ist der auszuführende Befehl! Alles, was danach kommt, wird als Argument an den Befehl übergeben.


Als Sonderzeichen steht das "*" zur Verfügung, was soviel wie "egal" bedeutet. Sollen mehrere Möglichkeiten angeboten werden, sind diese ohne Leerzeichen mit einem Komma voneinander zu trennen. Zeitspannen gibt man an, indem man einen Bindestrich ohne Leerzeichen zwischen Anfangs- und Endwert setzt. Immer dann, wenn die ersten fünf Einträge in der crontab mit der Systemzeit übereinstimmen, wird der darauf folgende Befehl ausgeführt. Ein Beispiel:

33 4 31 2 0 $HOME/cronscript.sh

...führt also das obige Script jeden Sonntag um 4:33 Uhr aus, der auf den 31. Februar fällt. Also nicht wirklich oft. Je nachdem, was man machen möchte, sind da Einträge wie dieser hier schon sinnvoller:

0 8,12,21 * * * $HOME/cronscript.sh

...führt das Script nun an jedem beliebigen Tag um 8, 12 und 21 Uhr aus, sofern der Rechner zu diesem Zeitpunkt läuft. Für einen kleinen Test kannst du ja eine crontab schreiben, die das Script jede Minute ausführt:

#TEST!
* * * * * $HOME/cronscript.sh


Wenn alles klappt, dann sollte in der Datei CRON-DATEI.txt in deinem Home-Verzeichnis mit der Zeit eine lange Liste von Datums-/Zeiteinträgen entstehen. Falls nicht, kann es sein, dass du als normaler User keine Erlaubnis hast, cronstabs anzulegen. Dann musst du, falls nicht vorhanden, eine Datei /etc/cron.allow anlegen und deinen Usernamen reinschreiben. Neben dieser User-crontab gibt es auch noch systemweite crontabs, die man (zumindest bei Debian) unter /etc/cron.d findet. Hierbei gibt es einen zusätzlichen Eintrag vor dem Kommando, der für den Usernamen vorbehalten ist, mit dessen Rechten das Kommando ausgeführt werden soll. Unter /etc/cron.daily, /etc/cron.weekly und /etc/cron.monthly kann man ganz normale Shell-Scripte ablegen, die dann bei Debian so in etwa täglich, wöchentlich und monatlich abgearbeitet werden, sofern dies möglich ist. Diese Scripte folgen nicht der crontab-Syntax und sind natürlich genauso wie die crontabs unter /etc/cron.d nur vom User root anzulegen.

So, wenn du jetzt mit cron etwas sinnvolles machen willst (ein Backup?), dann musst du nur noch das cronscript umschreiben und umbenennen, eine vernünftige Zeitfestlegung wählen und das Script optimalerweise im Pfad speichern. Das "$HOME/" vor dem Namen des Scriptes in der crontab musst du dann wegnehmen. Ich empfehle die dauerhafte Installation der crontab bzw. des Scriptes in den Verzeichnissen unterhalb von /etc vorzunehmen.



von NorbertKanotix:

Der Cron-Daemon liest seine Befehle aus der /etc/crontab. Wenn dort z. B.

0 * * * *  /usr/sbin/ntpdate ptbtime1.ptb.de>/dev/null 2>&1


steht, wird dieser Befehl stündlich ausgeführt. Wenn man jetzt in die letzte Zeile der /etc/init.d/bootmisc.sh den Befehl "cron" einträgt, wird beim Starten der Cron-Daemon aktiviert. Stündlich wird also die Uhr gestellt.


zurück
XML Revisions of $tag
Seiten-History :: Letzter Editor : RoEn :: Eigentümer : AndyMcCoy ::
Powered by pnWikka 1.0
 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.