NAS
30.10.2014
Automatisierung
1. Teil: „Aufgabenplanung mit Cronjobs fürs NAS“

Aufgabenplanung mit Cronjobs fürs NAS

Cronjobs sind so etwas wie das Linux-Pendant zur Aufgabenplanung von Windows. Damit lassen sich wiederkehrende Abläufe für den ständigen Gebrauch automatisieren.Cronjobs sind so etwas wie das Linux-Pendant zur Aufgabenplanung von Windows. Damit lassen sich wiederkehrende Abläufe für den ständigen Gebrauch automatisieren.Cronjobs sind so etwas wie das Linux-Pendant zur Aufgabenplanung von Windows. Damit lassen sich wiederkehrende Abläufe für den ständigen Gebrauch automatisieren.
Foto: Daneger / Istock
Cronjobs sind so etwas wie das Linux-Pendant zur Aufgabenplanung von Windows. Damit lassen sich wiederkehrende Abläufe für den ständigen Gebrauch automatisieren.
  • So geht’s: Ein Cronjob führt zu festgelegten Zeiten einen bestimmten Befehl aus. Der Eintrag im Terminkalender, der crontab, erfolgt in Form einer Textzeile.
Auf Linux-Systemen wie NAS- oder Webservern oder in Linux-Distributionen wie Ubuntu lassen sich Abläufe, die in regelmäßigen Abständen erfolgen sollen, automatisch ausführen. Das geschieht mit Hilfe von Cronjobs.
Dieser Artikel erklärt, wie Cronjobs grundsätzlich funktionieren. Der Artikel „Daten sichern vom NAS“ zeigt, wie Sie auf dem NAS Cronjobs zur automatischen Sicherung von Daten nutzen.

Namen und Begriffe

Zunächst gilt es, ein paar grundlegende Begriffe zum Thema Cronjobs zu klären.
  • Cron: Das ist der übergeordnete Name für den Dienst, der zu festgelegten Zeitpunkten automatisch Programme oder Skripts startet. Der Name leitet sich vom griechischen Wort Chronos für Zeit ab, das auch in Wörtern wie chronologisch steckt.
  • crond: Die eigentliche Arbeit erledigt der Cron-Daemon namens crond. Ein Daemon ist in etwa vergleichbar mit einem Systemdienst unter Windows. Einmal pro Minute sieht  der Daemon crond in der crontab nach und führt pünktlich alle anstehenden Kommandos aus.
  • crontab: Die crontab ist der Terminkalender des Cron-Systems. In dieser Datei steht, welcher Befehl wann und in welchen Intervallen ausgeführt werden soll. Auf NAS-Servern von Synology und in den meisten Linux-Distribu­tionen liegt die crontab im Verzeichnis „/etc“. Auf Qnap-NAS-Servern liegt sie im Verzeichnis „/etc/config“. 
  • Cronjob: Ein Cronjob ist ein einzelner Eintrag in der crontab.
2. Teil: „So funktionieren Cronjobs auf Linux-Systemen“

So funktionieren Cronjobs auf Linux-Systemen

Ein Cronjob ist eine Zeile in der Datei crontab und so etwas wie ein Termineintrag in einem Terminkalender. Jeder Eintrag besteht aus sieben Angaben, die jeweils durch ein Tabulator-Zeichen getrennt sind, manchmal auch durch Leerzeichen. Hier ein Beispiel:
Code-Beispiel
1
2
15 8 22 12 mon root script.sh
 
Code per E-Mail versenden

  • crontab: Hier sehen Sie die crontab eines Qnap-NAS, in der 19 Cronjobs eingetragen sind.
Das bedeuten die Angaben: Die ersten beiden Zahlen geben Minuten und Stunden an, hier also 8:15 Uhr. Es folgen der Tag des Monats und der Monat, hier der 22. Dezember. Die Monatsangabe kann als Wert zwischen 1 und 12 oder als Name wie jan, feb und so weiter erfolgen.
Es folgt der Wochentag. Zulässige Werte sind 0 bis 7. 0 und 7 sind der Sonntag, 1 ist der Montag und so weiter. Ebenfalls möglich sind Namen wie mon, tue, wed, also die ersten drei Buchstaben der englischen Wochentage.
Schließlich folgt optional der Name des Benutzers, der die Ausführung startet. Am Ende steht das Programm oder das Skript, das zu den definierten Terminen ausgeführt wird.
  • Cronjobs: Der Terminkalender crontab liegt auf Linux-Systemen normalerweise im Verzeichnis „/etc“ wie hier auf einem Synology-NAS.
Im Beispiel würde also das Shell-Skript script.sh an jedem Montag, den 22. Dezember, um 8:15 Uhr starten. Das ist natürlich unsinnig, denn im Extremfall würde das Skript erst in 28 Jahren aufgerufen werden. Hier kommen die Sterne ins Spiel.
Ein Stern * bedeutet: jeder oder jede. Der Cronjob 0 8 1 * * root script.sh startet an jedem 1. jedes Monats um 8 Uhr, 0 8 * * mon root script.sh an jedem Montag um 8 Uhr. Es lassen sich auch mehrere Zeiten in ein Feld eintragen, getrennt durch ein Komma. So meint folgender Eintrag beispielsweise jeden 1. und 15. eines Monats, 8 Uhr.
Code-Beispiel
1
2
0 8 1,15 * * root script.sh
 
Code per E-Mail versenden

Wenn Sie statt des Kommas einen Bindestrich verwenden, dann geben Sie Zeitspannen an. So bedeutet beispielsweise 0 8 1-15 * * root script.sh: Führe das Skript jeden Tag vom 1. bis zum 15. um 8 Uhr aus. Und schließlich lassen sich auch noch Intervalle mit dem Zeichen / definieren. Um das Kommando alle fünf Stunden auszuführen, schreiben Sie
Code-Beispiel
1
2
 0 */5 * * * root script.sh 
 
Code per E-Mail versenden

All diese Kommandos lassen sich beliebig kombinieren. Die meisten NAS-Systeme kennen auch Cronjobs wie @reboot root script.sh. Hiermit startet das Skript einmal nach jedem Systemstart.

Cronjobs einrichten

  • Cronjob editor: Vereinzelt gibt es grafische Bedienoberflächen für Cronjobs wie hier für ein NAS-System von Synology.
Grafische Bedienoberflächen zur Einrichtung von Cronjobs sind mitunter kompliziert einzurichten. Schneller und einfacher geht es im Textmodus.
Um einen Cronjob etwa auf einem NAS-Server anzulegen, müssen Sie die Datei crontab editieren. Dazu benötigen Sie zunächst einmal einen SSH-Zugang aufs NAS, um auf die Kommandozeilenebene zu gelangen. Dort starten Sie einen Editor und tragen den Cronjob in die crontab ein. Das hört sich komplizierter an, als es ist. Der Artikel „So sichern Sie Daten vom NAS automatisch“ erklärt genau, wie’s geht.

mehr zum Thema