Cron

Mit Cron kann man Befehle regelmäßig ausführen. Ein Beispieleinsatzgebiet wäre der Shutdown des Systems jede Nacht oder das Ausführen von Backup-Skripten, der Download von Dateien per Skript oder einfach das Senden von Benachrichtigungen. In dieser Anleitung wird die grundlegende Konfiguration und Nutzung per Konsole erklärt.

Softwarevoraussetzungen: Editor | Paketveraltung
Schwierigkeitsgrad: Einfach
Ausgetestet mit folgenden Betriebssystemen: Ubuntu | Debian | teilweise weitere Distributionen

Cron einrichten

Mittels des Befehls

user@system:~$ crontab -e        # für den eingeloggten Benutzer
user@system:~$ sudo crontab -e   # für den Benutzer root ("Befehle mit sudo")

kann man die sogenannten Tabellen editieren. Am Anfang hat man eine leere Seite vor sich, diese füllt man sich nun mit diesem Code:

#-----------------------------------------------------------------
# Shell variable for cron
SHELL=/bin/bash
# PATH variable for cron
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
 
#M   S    T M W   Befehl
#-----------------------------------------------------------------
 
 
#-----------------------------------------------------------------

Cron-Event eintragen

Wie du siehst es mehrere Spalten wie M, T oder M, die wie folgt zu erklären sind:

1.M     2.S     3.T     4.M     5.W 

1. M=Minute (0 - 59)
2. S=Stunde (0 - 23)
3. T=Tag (1 - 31)
4. M=Monat (1 - 12)
5. W=Wochentag (0 - 7) (Sonntag ist 0 und 7)

Der Befehl halt (fährt den Rechner herunter und benötigt Root-Rechte) soll jeden Tag um sagen wir einmal 23 Uhr ausgeführt werden, das würde dann so aussehen:

user@system:~$ sudo crontab -e     # öffnet die Crontab des Users Root
#M   S    T M W   Befehl
#-----------------------------------------------------------------
 
 0    23   * * *   halt
 
#-----------------------------------------------------------------

Und schon fährt der PC jeden Abend um 23 Uhr herunter. Die fertige Cron-Tab würde dann so aussehen:

#-----------------------------------------------------------------
# Shell variable for cron
SHELL=/bin/bash
# PATH variable for cron
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
 
#M   S    T M W   Befehl 
#-----------------------------------------------------------------
 
0    23   * * *   halt
 
#-----------------------------------------------------------------

Sonstige Zeitangaben und Beispiele

Weitere Zeitangaben

Es gibt nur die Angaben in „*“ und Zahlen sondern auch über Wörter, diese haben folgende Bedeutungen:

@reboot 	# beim Reboot
@yearly 	# jährlich
@monthly 	# monatlich
@weekly 	# wöchentlich 
@daily 	        # täglich
@hourly 	# stündlich

Beispiele

Zum besseren Verständnis hier einige Beispielzeilen einer Cron-Tab:

#-----------------------------------------------------------------
# Shell variable for cron
SHELL=/bin/bash
# PATH variable for cron
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
 
#M  S    T M W   Befehl 
#-----------------------------------------------------------------
 
@reboot          tuncfg                              # startet tuncfg beim Reboot 
0  23    * * *   halt                                # fährt den Rechner jeden Tag um 23:00 Uhr herunter
@hourly          /home/user/bin/del.sh               # führt jede Stunde die Datei /home/user/bin/del.sh aus 
9   9    * * 1   /home/user/bin/dig2.sh              # führt jeden Montag um 09:09 Uhr /home/user/bin/dig2.sh aus
@daily           /home/user/bin/getipfile3.sh        # führt jeden Tag /home/user/bin/getipfile3.sh aus 
0  13    * * *   apt-get update  > /dev/null 2>&1    # lädt täglich um 13:00 Uhr die Paketlisten neu und leitet die Ausgabe ins Leere
55 23    * * *   rsnapshot daily                     # startet rsnapshot daily jeden Tag um 23:55 Uhr
40 23    * * 6   rsnapshot weekly                    # startet rsnapshot weekly jeden Samstag um 23:40 Uhr
30 23    1 * *   rsnapshot monthly                   # startet rsnapshot monthly am Ersten des Monats um 23:30 Uhr
0  10,13 * * *   backup                              # führt den Befehl backup um 10:00 und 13:00 jeden Tag aus
0  */4   * * *   backup                              # führt diesen Befehl alle 4 Stunden aus 
 
#-----------------------------------------------------------------

chrisge 2014/12/06 17:10

Zur Bereitstellung eines bestmöglichen Angebots setzt diese Webseite Cookies ein. Durch die Nutzung dieser Webseite erklären Sie sich mit der Verwendung von Cookies einverstanden. Weitere Informationen

Diskussion

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
E O P V O