Der Cron Dämon


Die Schritte
 


Der Cron Dämon und seine Möglichkeiten


Der Cron Dämon ist den meisten umsteigenden Windows-Usern als Task-Manager bekannt.
Wie auch bei Windows wird bei den meisten Linux-Distributionen nicht nachgefragt ob man den Cron Dämon installieren will. Er wird einfach mit installiert und auch im Run-Level-Manager gestartet.
Der Cron Dämon läuft im Hintergrund und führt zu angegebenen Zeiten andere Programme aus und ist sozusagen die Zeitschaltuhr für Linux.
Die ist besonders dann von Vorteil, wenn man leicht automatisierbare Aufgaben zu erledigen hat, wie etwa das Erstellen einer Sicherheitskopie von wichtigen Daten.
Die Crontab kann mit crontab -l angesehen werden.



Wie ist nun die Syntax der crontab:

Die Tabelle besteht aus mehreren festgelegten Spalten. Die ersten fünf enthalten den Zeitcode (Minuten, Stunden, Tage, Monat, Wochentag), die letzte Spalte enthält den Befehl der ausgeführt werden soll.
Die Spalten werden durch ein Leerzeichen getrennt.

Minuten
Stunden
Tage
Monate
Wochentage
0-59 und * für alle Minuten
0-23 und * für alle Stunden
1-31 und * für jeden Tag
1-12 und * für jeden Monat
0- 7 und * für jeden Wochentag (0 und 7 für Sonntag)

Alias: Eine weitere möglichkeit der Zeitangabe.

Die Tabelle besteht aus mehreren festgelegten Spalten. Die ersten fünf enthalten den Zeitcode (Minuten, Stunden, Tage, Monat, Wochentag), die letzte Spalte enthält den Befehl der ausgeführt werden soll.
Die Spalten werden durch ein Leerzeichen getrennt.


@reeboot
@yearly
@monthly
@weekly
@daily
@hourly

einmalig nach dem booten
einmal im Jahr            - 0 0 1 1 *
einmal im Monat         - 0 0 1 * *
einmal in der Woche    - 0 0 * * 0
einmal am Tag             - 0 0 * * *
einmal in der Stunde    - 0 * * * *

Weitere Möglichkeiten der Zeitangabe.

Ein Komma , lässt mehrere Zeitangaben zu.
z.B Jeden Tag um 10,12,15,usw. Uhr
0 10,12,15 * * *

Ein Bindestrich - gibt einen Zeitraum an.
Jeden Tag von 08-22 Uhr (jede Stunde)
0 08-22 * * *

Ein Schrägstrich / teilt einen Zeitraum ein.
Zwischen 8 und 22 Uhr alle 30 Minuten
*/30 6-23 * * *


Die Umgebungsvariablen der Crontabelle

MAILTO Normalerweise schickt Cron sämtlichen Output per E-Mail an den auftraggebenden Benutzer. MAILTO definiert einen anderen Empfänger.
MAILTO=root,admin
#Der Output der folgenden Cronjobs geht jetzt per Mail an die User root und admin
MAILTO=""
#Mit diesem Variableninhalt und jetzt an niemanden mehr.
PATH Pfad, in dem nach von Cron auszuführenden Kommandos gesucht wird.
Default ist /usr/local/bin:/usr/bin:/bin:. .
Achtung: Setzt manin der persönlichen Crontab die Variable PATH , wird diese vollständig überschrieben; Anhängen funktioniert nicht.
PATH=$PATH:/home/admin
#$PATH wird nicht expandiert; es werden nunmehr
#nur Kommandos aus /home/trish/bin gefunden.
SHELL Shell, in der die Kommandos ausgeführt werden sollen.
Default ist /bin/sh (im übrigen auch bei Dillons Cron).
SHELL=/usr/bin/tcsh
#Statt /bin/sh wird die tcsh verwendet.

Erklärendes


Da die Crontabelle nacheinander abgearbeitet wird, kann man, für jeden Cronjob eine eigene Umgebung definieren,
Dazu werden die entsprechenden Umgebungsvariablen vor jedem Eintrag neu gesetzt:

z.B.
MAILTO="root,admin"
*/10 * * * * backup_data.sh
MAILTO=user1
0 * * * * backup_user1.sh

Während das Ergebnis des backup_data scriptes alle 10 Minuten an root und auch an admin gemailt wird,
bekommt user1 jeweils zur vollen Stunde das Ergebnis seines backup_scriptes zugeschickt


Wer darf und wer darf nicht?


Während die systemweiten Aufträge in /etc/crontab direkt von root bearbeitet werden, geht das für alle benutzerspezifischen Aufträge in /var/spool/cron/crontabs/ (bei SuSE) nur über den Umweg /usr/bin/crontab.
Vor die persönliche Crontabelle hat Linux bei Cron jedoch allow- und deny-Dateien gesetzt.
bei S.u.S.E. in den Dateien /var/cron/allow = Zugriff erlaubt, und /var/cron/deny = Zugriff verweigert.

Wenn diese Dateien nicht existieren, dürfen alle User nach Herzenslust den cron Dämon mit Aufträgen überhäufen.

Wie bekommt nun ein Benutzer heraus, ob Cron seine Aufträge bearbeitet?
Das Kommando

crontab -l

gibt Auskunft:

Nichtprivilegierte User erhalten dann die Meldung

You user1 are not allowed to use this program (crontab)
See crontab(1) for more information

Benutzer, die den Cron verwenden dürfen, erhalten auf dieses Kommando die Meldung:

admin@Linux-neuling.de:/home/admin $ crontab -l
no crontab for user1



Hier ein Beispiel einer Crontab

SHELL=/bin/sh # SHELL die benutzt wird
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin # Pfad in denen Ausführbare Befehle stehen können
MAILTO=root # Empfänger der Mails von cron
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
59 * * * * root rm -f /var/spool/cron/lastrun/cron.hourly
14 0 * * * root rm -f /var/spool/cron/lastrun/cron.daily
29 0 * * 6 root rm -f /var/spool/cron/lastrun/cron.weekly
44 0 1 * * root rm -f /var/spool/cron/lastrun/cron.monthly

# eigene Cron - Jobs fuer XXXXXX von Admin

# Einstellung eines CRON-JOBS
# erste angabe sind die Minuten
# zweite angabe sind die Stunden
# dritte angabe ist der Tag des Monats = Tag(Zahl von 1 bis 31)
# vierte angabe der Monat = Monat (Zahl von 1 bis 12)
# fuenfte angabe ist der Tag einer woche = Wochentag (zahl von 0=Sonntag bis 6=samstag)
# sechste angabe ist als welcher benutzer soll das ausgefuert werden
# siebte angabe ist das auszufuehrende Commando
# * an den jeweiligen Stellen stehen fuer alle moeglichen werte

00 23 * * * /etc/eigene_cron_scripte/mitarbeiter.src
# fuert jede Nacht um 23Uhr das Script mitarbeiter.src aus und sichert die eigenen_Dateien und Outlook aller Mitarbeiter

45 23 * * * /etc/eigene_cron_scripte/db_sic.src
# fuert jede Nacht um 23.45 Uhr das Script db_sic.src aus und sichert die erstellten MDB'S

*/10 * * * * root /usr/bin/faxrunq
# ruft alle 10Minuten faxrunq zu senden der Faxe auf



Verzeichnis
Google