Pünktlich ausgeführt

Programme zeitgesteuert abarbeiten

01.06.2002
Einmal angeordnet und immer wieder ausgeführt – Linux-User haben verschiedene Möglichkeiten, sich Arbeit durch Automatisierung zu ersparen.

Wussten Sie schon, dass Linux Ihre Faulheit unterstützt? Solange Ihr Rechner läuft, kann er viele Dinge erledigen, ohne dass Sie dabeisitzen müssen. Sie sagen ihm, wann er was tun soll und brauchen sich nun nicht mehr darum kümmern.

Einmal ausführen, bitte

Für Arbeiten, die nur einmal zu einer bestimmten Zeit ausgeführt werden müssen, stellt Linux den at-Befehl zur Verfügung. Wollen Sie zum Beispiel des Nachts den Inhalt eines MP3-Verzeichnisses in wav-Dateien umwandeln, um davon am nächsten Tag eine Audio-CD zu brennen, schreiben Sie ein kleines Skript, das die Konvertierung erledigt:

#!/bin/shfor file in @L: *.mp3
do
  mpg123 -w "$file.wav" "$file"
done
for Laufvariable Liste
do
  [verschiedene Befehle]
done

Im Beispiel wird der mpg123-Befehl für jede Datei im aktuellen Verzeichnis, die mit .mp3 endet, einmal aufgerufen.

Dieses speichern Sie unter dem Namen mp32wav im Verzeichnis mit den zu konvertierenden MP3-Dateien ab und machen es mit chmod a+x mp32wav ausführbar. Da die Konvertierung selbst bei kleinen MP3-Sammlungen nicht gerade schnell geht, darf der Rechner zur Schlafenszeit arbeiten:

pingi@server:~/mp3$ at 23:00
warning: commands will be executed using /bin/sh
at> mp32wav
at> [Strg][D]

Vorausgesetzt, der Festplattenplatz hat ausgereicht, liegen die wav-Dateien zum Frühstück einträchtig neben den MP3-Originalen. Soll das Skript hingegen erst in drei Tagen um 23 Uhr starten, weil Sie in der Zwischenzeit ein paar Spätschichten am Rechner einlegen wollen, drücken Sie diesen Wunsch so aus:

pingi@server:~/mp3$ at 23:00 + 3 days
at> mp32wav
at> [Strg][D]

Dass der Rechner an diesem Tag um diese Uhrzeit eingeschaltet sein muss, versteht sich dabei von selbst. Sie erhalten auch automatisch eine Mail über die Ausführung Ihres Wunsches – vorausgesetzt, Sie haben einen lokalen Mail-Server installiert. Die Mail geht immer an den User, der den at-Auftrag erteilt hat.

Wer wissen will, was at so alles auszuführen plant, bekommt von atq Auskunft. Während ein normaler User lediglich erfährt, was ihm die Zukunft bringt, bekommt root Einsicht in alle offenen Jobs:

root@server:~# atq
2       2002-04-13 23:00 a pingi

Überlegt man es sich in der Zwischenzeit anders, löscht atrm Jobnummer den Auftrag wieder:

pingi@server:~$ atrm 2

Eine auf modernen Workstation-PCs sehr selten benötigte Unterart des at-Kommandos ist der batch-Befehl. Dieser wirkt wie at, mit dem einzigen Unterschied, dass er das Kommando erst startet, wenn die Auslastung des Systems eine gewisse Grenze (load average < 0.8) unterschritten hat. Arbeitet man beispielsweise an einem tagsüber stark ausgelasteten Server, wartet der Batch-Befehl, bis die Mitarbeiter Feierabend gemacht haben:

pingi@server:~/mp3$ batch -m
at> mp32wav
at> [Strg][D]
job 8 at 2002-04-13 14:32

Die Option -m ("mail"), die sich auch mit at verwenden lässt, bewirkt dabei, dass auch dann eine Erfolgsmail verschickt wird, wenn das abzuarbeitende Kommando selbst keine Ausgaben auf der Standardausgabe macht.

Auch die mit batch auf die Ausführung wartenden Kommandos kann man sich mit atq ansehen und mit atrm löschen.

pingi@server:~$ uptime
  2:05pm  up  8:52,  4 user,  load average: 0.62, 0.35, 0.22

Er gibt die Systemzeit, die Zeit seit dem letzten Start, die Anzahl der angemeldeten User sowie die durchschnittliche Systemauslastung der letzten Minute, der letzten fünf Minuten und der letzten Viertelstunde an.

Mit schöner Regelmäßigkeit

Sollen Aufgaben regelmäßig durchgeführt werden, arten die vielen at-Aufrufe in Fleißarbeit aus. Das ist sicher nicht im Sinne eines Linux-Users, weshalb mit dem Cron-Daemon [1] ein Programm zur Verfügung steht, das sich auf diese Aufgabe spezialisiert hat.

Am einfachsten erstellt man die entsprechende Auftragstabelle, die Crontab, mit einem grafischen Hilfstool [3]. Unter KDE kann man dafür kcron verwenden (Abbildung 1). Damit erzeugt man einen neuen Eintrag mit Bearbeiten / Neu (Abbildung 2).

Abbildung 1: Startseite von Kcron 3.0
Abbildung 2: Neuen Auftrag anlegen mit kcron

Damit wir auch später noch wissen, worum es geht, geben wir dem Ganzen im Kommentarfeld einen Namen und tragen bei Programm das aufzurufende Kommando ein. Jetzt wird mit Hilfe der verschiedenen Zeit-Knöpfe noch festgelegt, zu welchen Daten und Zeiten der Cron-Job gestartet werden soll. Mit OK kommt man wieder zurück zum Hauptfenster. Datei / Speichern tut leider nicht in allen kcron-Versionen das Erwartete (bei KDE 3.0 schon), aber spätestens beim Schließen des Programms kann man die Übertragung der angezeigten Aufgaben an den Cron-Daemon problemlos nachholen.

Wem das Drücken vieler Knöpfe zu umständlich erscheint, benutzt statt eines GUI-Tools nach alter Tradition ein Kommandozeilen-Programm. crontab -l gibt die Liste der aktuellen Einträge aus – Listing 1 zeigt ein Beispiel.

Listing 1

Eine persönliche Cron-Tabelle

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.999 installed on Wed Mar 27 17:29:15 2002)
# (Cron version – $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
# Countermail für Alexa
10   0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 @L: * @L: * @L: * /home/schrotty/Arbeit/Mail/auswertung
# Online-Auswertung
0,30 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 @L: * @L: * @L: * /home/schrotty/Arbeit/Mail/onLog.pl >/tmp/onAusw
# imail
0    1,3,5,7,9,11,13,15,17,19,21,23                                @L: * @L: * @L: * /home/schrotty/Arbeit/Mail/imail
# This file was written by KCron. Copyright (c) 1999, Gary Meyer
# Although KCron supports most crontab formats, use care when editing.
# Note: Lines beginning with "#\" indicates a disabled task.

Wie auch bei Shell-Skripten leiten # am Zeilenanfang eine Bemerkung ein. Jede andere Zeile muss, durch Leerzeichen getrennt, folgende Einträge enthalten: Minuten, Stunden, Tage, Monate, Wochentage und auszuführendes Kommando. Bei der Angabe des Wochentags zählt man einfach durch: 0 steht für den Sonntag, 6 für den Samstag. Das @L: * kann als Joker verwendet werden, wenn der betreffende Eintrag egal ist. Sollen mehrere Werte gelten, sind sie durch ein Komma – ohne Leerzeichen davor oder dahinter – zu trennen. Die Online-Auswertung in Listing 1 wird also immer um 0 und 30 Minuten zu jeder Stunde an jedem Tag ausgeführt.

Wollen Sie ganz von vorn anfangen, löscht crontab -r die gesamte Crontab. crontab -e bearbeitet sie mit dem in der Umgebungsvariablen EDITOR eingestellten Standardeditor (meistens vi). Wer sich mit diesem nicht abmühen möchte, schreibt die gewünschten Aufträge mit dem Lieblingseditor entsprechend formatiert in eine ASCII-Datei und überführt diese mit crontab dateiname in die Crontab.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Cron, At
    Cron- und At-Jobs automatisieren Abläufe auf dem Linux-System, rotieren Logfiles, erstellen automatisch Backups und wecken Sie morgens mit der eigenen MP3-Sammlung – auf Wunsch nur an bestimmten Tagen. Wir zeigen, wie Sie Dinge punktgenau erledigen lassen.
  • Korner: KCron
    Warum selber an Aufgaben denken, die zu einem bestimmten Zeitpunkt ausgeführt werden sollen, wenn einem hilfreiche Programme wie der Cron-Daemon diese Arbeit gern abnehmen? Mit der grafische Oberfläche KCron legen Sie fest, was wann zu erledigen ist.
  • Crontabellen per Mausklick
    So nützlich der Crondämon ist, um den Rechner zu festgelegten Zeiten den einen oder anderen Auftrag ausführen zu lassen – das Format, in dem er sich bitten lässt, ist einigermaßen gewöhnungsbedürftig. Hier helfen grafische Crontab-Erstellungsprogramme.
  • Jobs mit Cron abarbeiten
    So chaotisch Linuxer/innen auch manchmal sein mögen – meistens werkelt unbeachtet im Hintergrund ein Pünktlichkeitsfanatiker namens cron(d) auf ihren Rechnern. Ihn zu nutzen, kann eine Menge langweilige Arbeit ersparen.
  • Webseiten mit Naja downloaden
    Alles wird einfacher. Software-Hersteller entwickeln "benutzerfreundliche" Programme, in denen der Anwender mit wenigen Klicks ans Ziel kommen soll. Dieser Beitrag stellt Naja vor, einen Download-Manager und Website-Grabber der Firma Keyphrene, und prüft, wie es um die viel gepriesene Usability steht.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

WLAN-Signalqualität vom Treiber abhängig
GoaSkin , 29.10.2014 14:16, 0 Antworten
Hallo, für einen WLAN-Stick mit Ralink 2870 Chipsatz gibt es einen Treiber von Ralink sowie (m...
Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...