[Zurück] [Home] [Weiter]       http://rowa.giso.de  

Eine frei verwendbare Unix-Grundlagenschulung mit muLinux

Zeitgesteuerte Ausführung von Programmen

Um Programme zu bestimmten Zeiten starten zu können, ist ein im Hintergrund laufendes Programm notwendig. Dieses vergleicht ständig die Zeit mit den Zeiteinträgen in der Aufgabenliste. Entspricht ein Zeiteintrag in der Tabelle der aktuellen Zeit, so wird das entsprechende Programm gestartet. So können Routineaufgaben in den Nachtstunden selbstständig vom Computer erledigt werden. Solche Aufgaben wären z. B.

Daemons

Programme, die im Hintergrund arbeiten, nennt man Daemons (engl. für Dämon). Sie warten bis eine Anforderung an sie kommt und treten dann in Kraft bzw. werden in Kraft getreten. Die meisten Daemons werden schon beim booten gestartet. Andere Daemons werden erst bei Bedarf von einem Oberdaemon gestartet.

Für die zeitgesteuerte Abarbeitung von Programmen sind die Daemons atd und crond verantwortlich. Daemons erkennt man am d Ende.

Um diese Daemons unter muLinux zu aktivieren, müssen wir diese mit setup starten.

/# setup -f server
Do you want to change server/daemons setup? (y/n): y
Do you want to start XWindow server at any boot? (y/n): [Enter]
Do you want start atd daemon running? (y/n): y
Do you want start RING server running? (y/n): [Enter]
Do you want start SERIAL server running? (y/n): [Enter]
Do you want start DIALIN_SERVER running? (y/n): [Enter]
Do you want start FAX_SERVER running? (y/n): [Enter]
Do you want start TELNET_SERVER running? (y/n): [Enter]
Do you want start INETD_SERVER running? (y/n): [Enter]
Do you want start VCM_SERVER running? (y/n): [Enter]

/# setup -f crond
Do you want a running cron daemon? (y/n): y
Do you want to edit /etc/crontab now: n

Wir speichern unsere Konfiguration.

/# setup -s tutorial01

Einmalige Ausführung von Prozessen mit at zu einer bestimmten Zeit

Mit at kann das System veranlaßt werden, beliebige Kommandos oder Shellskripte zu einem vorher bestimmten Zeitpunkt auszuführen. Die Programme werden zu einem vorher bestimmten Zeitpunkt vom System im Hintergrund gestartet. Nach seiner Durchführung wird der Auftrag gelöscht. Eine Hilfestellung wird mit der Option -h angezeigt.

/# at -h

Die Syntax der muLinux-Variante des at-Befehls weicht von der normalen Variante ab. Hier ist at als Filter zu verwenden.

Ein Ton soll am 5. des Monats um 04:00 Uhr erklingen.

/# echo ´wave -c 440 5´ | at 05 04:00

Der Rechner soll am 5. des Monats um 17:00 heruntergefahren werden.

/# echo ´halt´ | at 05 17:00

Jeder Auftrag erhält eine Jobnummer. Die Warteschlange (engl. queue) der Aufträge läßt sich mit atq anzeigen.

/# atq

Im Verzeichnis /var/spool/atspool werden Textdateien für die Aufträge gespeichert.

/# ls /var/spool/atspool

Der Name der Datei entspricht der dazugehörigen Jobnummer. Mit less läßt sich der Inhalt anzeigen.

/# cd /var/spool/atspool
/# less Jobnummer

Aufträge lassen sich auch vor der Ausführung löschen.

/# atrm Jobnummer

Hinweis:
Auch unter Windows NT gibt es im DOS-Fenster den at-Befehl in ähnlicher Form. Man könnte so auf einen NT-Rechner das kleine muLinux installieren. In der Nacht kann dann automatisch muLinux hochfahren lassen, um bestimmte Aktionen auszuführen. Per Zeitsteuerung kann dann muLinux den Rechner wieder mit NT starten. So kann ein ganzes Betriebsystem als Trojanisches Pferd funktionieren.

Regelmäßige Ausführung von Prozessen mit /etc/crontab

Der Datei /etc/crontab steuert die regelmäßige Ausführung von Programmen. Im richtigen Unix verfügt jeder User über eine crontab-Datei. Es sind auch weitere Befehle zur Steuerung von crond vorhanden. Bei muLinux müssen wir die Datei /etc/crontab editieren.

/# vi /etc/crontab

Hier deren Inhalt:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file.
# This file also has a username field, that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user        command
42  6  *   *   *  root  run-parts /etc/cron.daily
47  6  *   *   7  root  run-parts /etc/cron.weekly
52  6  1   *   *  root  run-parts /etc/cron.monthly

# test vari

#*/3 * * * *        root wave -c 220 4
#*/15 * * * *       root (wave -c 440 1; wave -c 880 3)
#*/2 * * * *        root echo "ciao" > /dev/console
#* */2 * * *        root mail -s "Da cron" root%Ciao, amico%

Kommentare beginnen mit #. Jeder Job wird durch eine Zeile dargestellt. Wobei folgende Reihenfolge zu beachten ist (siehe Kommentarzeile):
  1. min = Minute (Zahl von 0 bis 59)
  2. h = Stunde (Zahl von 0 bis 23)
  3. dom (day of the month) = Tag (Zahl von 1 bis 31)
  4. month = Monat (Zahl von 1 bis 12)
  5. dow (day of the week) = Wochentag (Zahl von 0= Sonntag bis 6=Sonnabend)
  6. user = Nutzer
  7. command = Auszuführender Befehl

Ein Stern "*" steht bei allen Parametern für alle jeweils möglichen Werte.

Im ersten Teil wird der muLinux-Befehl run-parts aufgerufen. Dieser bewirkt das Ausführen aller Programme in den angegebenen Verzeichnissen. Im obigen Beispiel werden also um 6:42 Uhr jeden Tag alle Programme in dem Verzeichnis /etc/cron.daily ausgeführt. Um 06:47 werden an jedem 7. Tag der Woche (Sonntag) alle Programme im Verzeichnis /etc/cron.weekly aufgerufen. Am ersten Tag jedes Monats um 06:52 werden alle Programme in /etc/cron.monthly gestartet.

Im Verzeichnis /etc/cron.daily ist das Beispielskript Test. Es hat folgenden Inhalt:

#!/bin/sh

#wave -c 440 1
#wave -c 880 3

Es macht gar nichts, da alle Zeilen auskommentiert sind. Wir können den Kommentar in einer Zeile entfernen. So z. B. für wave -c 440 1 . Es ertönt also jeden Morgen ein Piep. Das ist vielleicht keine gute Idee.

Wir wollen den Computer als Wecker einsetzen. An jeden Werktag soll er um 6:55 ein Ton erzeugen.

#m h dom mon dow user        command
55 6 *   *   1-5 root   wave -c 220 4
[Zurück] [Home] [Weiter]