Sitemap | Nicht eingeloggt

Layout: V2_DayTime
V2_DayTime
| V2
V2
| V2 Dark
V2 Dark
| Alle

DE

Tux

Programme periodisch automatisch ausführen

Wichtiger Hinweis:
Ich verwende Cronjobs für einige Aufgaben auf dem Server wie auch auf meinem Desktop, bin aber in keinster Weise ein Profi was die automatische Ausführung von Programmen oder Diensten angeht!
Man kann dieses Thema betreffende Anforderungen auf diverse Arten lösen in Linux, ich gehe hier nur auf mir bekannte, benutzte und geprüfte ein.
Da mich das Thema aber sehr interessiert bin ich offen für Anregungen oder konkrete Beispiele wie man etwas "schöner" lösen könnte.

Programme mit Cron beim Start des Systems ausführen

Was ist Cron?

Aus dem Wikipedia-Artikel über Cron:
Der Cron-Daemon dient der zeitbasierten Ausführung von Prozessen in Unix und unixartigen Betriebssystemen wie Linux, BSD oder Mac OS X, um wiederkehrende Aufgaben – sogenannte Cronjobs – zu automatisieren.
Häufig führt der Cron-Daemon wichtige Programme für die Instandhaltung des Systems aus, wie zum Beispiel Dienste für das regelmäßige Archivieren und Löschen von Logdateien.

Was ist die Crontab?

Die auszuführenden Anweisungen werden in einer benutzereigenen Tabelle gespeichert, der sogenannten Crontab. Der Begriff leitet sich ab von griechisch chronos = die Zeit und lat. tabula = die Tafel oder das Brett und bedeutet demnach so viel wie „Zeittafel“ (also „Stundenplan“). Diese Tabelle besteht aus sechs Spalten; die ersten fünf dienen der Zeitangabe (Minute, Stunde, Tag, Monat, Wochentag), alle weiteren Zeichen bis zum Zeilenumbruch werden als der auszuführende Befehl aufgefasst. Jedes Mal, wenn ein spezifischer Zeitpunkt erreicht wird, wird der entsprechende Befehl, meist ein Shellskript, ausgeführt.

Weitere Infos hier: Link zum Ubuntu-Artikel über Cron der sehr gut geschrieben und sehr ausführlich ist. Der Text gilt im grossen Ganzen für alle Linux-Distributionen.

Beispiele

Beim Start ausführen

Damit ein Programm bei jedem Start ausgeführt wird, ist es nötig dafür in der Crontab einen Starteintrag anzulegen.
Dafür nimmst Du den Befehl crontab zur Hand.

So öffnen wir die Crontab für Root zum Editieren:

sudo crontab -e

Am Ende der Datei kannst Du diese Zeile einfügen, damit das Programm Programmname bei jedem Start des Computers ausgeführt wird:

@reboot cd /pfad/zu/dem/programm && sudo Programmname

Die Cronbefehle werden im Homeverzeichnis des Besitzers der Crontab ausgeführt, deswegen macht es hier immer Sinn den kompletten Pfad vor dem Programm mitzugeben oder wie hier beschrieben in das Programmverzeichnis zu wechseln.

@reboot ist eine Abkürzung für einmalig, beim Start. Es gibt mehrere solche Abkürzungen:

Abkürzung Ausführungszeitpunk Cron Schreibweise
@reboot einmalig, beim Start gibt es nicht
@daily einmal pro Tag 0 0 * * *
@midnight einmal pro Tag 0 0 * * *
@hourly einmal pro Stunde 0 * * * *
@weekly einmal pro Woche 0 0 * * 0
@monthly einmal im Monat 0 0 1 * *
@annually einmal im Jahr 0 0 1 1 *
@yearly einmal im Jahr 0 0 1 1 *

Einmal die Woche ausführen

So wird script1.sh einmal die Woche am Sonntag um 23:59 ausgeführt und die Ausgaben verworfen:

59 23 * * 0 /home/BENUTZERNAME/script/script1.sh > /dev/null

rc.local, rc.monthly, rc.weekly und rc.daily

rc.local

Man kann in der Startdatei des Betriebssystems (rc.local) ein Kommando einpflegen, das dann bei jedem Systemstart ausgeführt wird.
Diese Variante habe ich gewählt, um die Trim-Funktion für SSDs unter Ubuntu automatisch auszuführen. Mehr Infos findest Du unter Linux / Debian > Eine SSD unter Linux verwenden.

Wir öffnen dafür die Datei /etc/rc.local:

sudo nano /etc/rc.local

So sieht die Datei im Anfangszustand aus:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

Oberhalb der Linie exit 0 fügen wir diese Zeile ein:

Befehl

Jetzt die Datei speichern und schliessen und den Computer neu starten. Der gewünschte Befehl wird jetzt immer bei einem Computerstart ausgeführt.

rc.monthly, rc.weekly, rc.daily

Wenn man ein script in den Ordner /etc/rc.monthly legt, wird das Script jeden Monat einmal ausgeführt.

Wenn man ein script in den Ordner /etc/rc.weekly legt, wird das Script jede Woche einmal ausgeführt.
Diese Option verwende ich für wöchentliche MySQL Dumps, die ich dann per FTP herunterladen kann. Anleitung dafür findest Du unter Linux / Debian > MySQL Datenbank sichern und wiederherstellen.

Wenn man ein script in den Ordner /etc/rc.daily legt, wird das Script jeden Tag einmal ausgeführt.

Services

Die Services, die man mit sudo service SERVICE start | stop | restart verwenden kann, sind unter /etc/init.d als Shellscript (oder Links zu den Shellscripten) gespeichert, die die zusätzlichen Befehle auswerten und je nach Befehl andere Routinen ausführen.

Link zu Autostart Tips für Ubuntu Only

Infos zum Dokument
Author: Christoph Iseli
Datum: 03.12.2014 Letzte Änderung: 25.03.2015

0 Kommentare

Einen neuen Kommentar hinzufügen

Info: Wenn Du eingeloggt bist, musst Du keine Userdaten mehr eingeben.

Ort:
(Optional)

Kommentar:

Impressum
Programmierung: Christoph Iseli | Design: Christoph Iseli
Webseitencode: Darf frei kopiert / verwendet werden (Downloads) | Inhalt: Darf frei verwendet werden, solange ein Link auf diese Seite mitgegeben wird.