Cronjobs und At-Jobs

Mit Cronjobs lassen sich sehr einfach wiederkehrende Skripte und Programme zu einer bestimmten Zeit ausführen. Einfache Beispiele für die Verwendung von Cronjobs sind bspw:

  • Job zu einer Zeit ausführen wenn das System nicht ausgelastet ist (z.B. über Nacht)
  • Regelmäßig sich wiederholende Aufgaben (täglich, wöchentlich, …)
  • Jobs die automatisch im Hintergrund ablaufen sollen

Der auszuführende Befehl wird dabei in einer Tabelle, der so genannten Crontab, gespeichert. Das Programm ist bereits in jeder Ubuntu-Installation enthalten bzw. kann über das cron Paket installiert werden. Bei Ubuntu gibt es zusätzlich eine grafische Oberfläche zur Verwaltung der Cronjobs: Cron-Schedule im gleichnamigen Paket:

Ubuntu Gnome Schedule
Ubuntu Gnome Schedule

Für den KDE gibt es das Tool kde-config-cron welches sich nach Installation ebenso über Systemeinstellungen -> Systemverwaltung -> Aufgabenplaner aufrufen lässt.

 

Crontab

Mit dem Befehl crontab -l erhält man eine kurze Einführung sowie eine Übersicht aller eingerichteten Cronjobs. Das Programm ist in jeder Ubuntu-Distribution im Paket cron enthalten.

Es gibt systemweite Cronjobs welche nur durch den root Benuter erstellt werden können und benutzerspezifische Cronbjos bei welchen jeder Benutzer seine eigenen Cronjobs erstellen kann, diese werden im Verzeichnis /var/spool/cron/crontabs abgelegt.

Über crontab -l werden die Cronjobs des aktuellen Benutzers angezeigt, die Jobs für den root User werden mit sudo crontab -l angezeigt. Jeder Crontab-Eintrag hat dabei 6 Felder um die genaue Zeit sowie den auszuführenden Befehl anzugeben:

  1. Minute (0-59)
  2. Stunde (0-23)
  3. Tag im Monat (1-31)
  4. Monat (1-12)
  5. Wochentag (0-6, wobei 0 für Sonntag steht)
  6. Befehl welcher durch die Shell ausgeführt wird

Beispiel:

min hour dayofmonth monthofyear dayofweek command
0 12 14 2 * /scripting/backup.sh >> /var/log/crontab.log

Optionen:

Format Bedeutung
* Wildcard, steht für alle möglichen Werte
1,3,5 logisches ODER; meint bspw. bei der Stunde 1, 3 oder 5
*/10 bei Minute, Stunde und Monat bedeutet alle 10 (Minuten, Stunden, Monaten)
4-6 Zeitspanne für Ausführung, z.B. für die Wochentage von 4-6 (Do-Sa)

 

At-Jobs

Bei At-Jobs wird einmalig bestimmt zu welchem Zeitpunkt ein bestimmter Job ausgeführt wird. Wie beim Cronjob ist ein laufender Daemon für die Ausführung verantwortlich und jede Minute prüft ob eine Aufgabe erledigt werden soll.

At wird auf der Kommandozeile ausgeführt mit den Zeitpunkt als Parameter, wenn der Job gestartet werden soll. Nach Eingabe von weiteren Parametern wird der Job über die Tastenkombination [Strg] + [D] beendet:

In diesem Beispiel wird der Kommandozeilen-Player mgp321 gestartet und die Songs aus dem angegebenen Verzeichnis in zufälliger Reihenfolge wiedergegeben, dies setzt natürlich voraus dass der Rechner dann auch eingeschaltet ist. Der At-Befehl wird auch bei einem Neustart des Rechners nicht vergessen

Der Zeitpunkt lässt sich auf unterschiedliche Weise angeben, die u.a. Tabelle listet die häufigsten Schreibweisen auf.

Zeitformate für At

Format Bedeutung
16:16 16:16 Uhr am heutigen Tag.
07:00pm 19:00 Uhr am heutigen Tag (ohne Angabe von am oder pm ist immer am gemeint).
now Jetzt
tomorrow Morgen
today Heute
now + 10min In zehn Minuten; weiterhin ist die Angabe von Stunden (hours), Tage (days), Wochen (weeks) und Monaten (months) möglich.
noon tomorrow Um 12:00 Uhr am nächsten Tag; alternativ versteht At auch teatime (= 16:00 Uhr) oder midnight (= Mitternacht).
6/9/06 Am 9. Juni 2006; alternative Schreibweisen für das Datum sind z. B. 6.9.06 und 6906.

Nach getaner Arbeit verschickt der Job ausführenden Benutzer eine Mail – unabhängig davon ob der Job korrekt ausgeführt wurde oder eine Fehlermeldung verursacht hat; vorausgesetzt es ist ein lokaler Mailserver installiert und konfiguriert. Für Jobs die standardmäßig keine Ausgabe erzeugen kann man diese beim Aufruf des Jobs mit der Option -, erzwingen, beispielsweise für die Kommandos mv, cp oder rm.

Jobs anzeigen und löschen

Alle Jobs die sich in Bearbeitung befinden und auf deren Ausführung warten befinden sich in einer Warteschlange welche man sich über at -f oder atg auf dem Bildschirm anzeigen lassen kann

At gibt an dieser Stelle leider nur wenige Informationen über die Jobs aus und zeigt hier nur die Jobnummer, das Datum mit Uhrzeit, den Namen der Warteschlange sowie den Benutzernamen unter welchem der Job ausgeführt an. Jeder Benutzer erhält in dieser Übersicht nur seine eigenen Jobs, der Systemadministrator kann sich hingegen alle Jobs der Warteschlange anzeigen lassen. Um sich diese anzeigen zu lassen schaut mal als root-User in das Verzeichnis der At-Jobs welches sich bei Suse Linux und Ubuntu unter /var/spool/atjobs befindet.

Um einen At-Auftrag wieder zu löschen, geben Sie den Befehl at -d oder entsprechend atrm unter Angabe der Job-Nummer ein:

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">