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.
- Datensicherungen
- Aufräumarbeiten im Verzeichnissystem
- Statistikauswertungen von Internet-Zugriffen
- Statusberichte per Email oder SMS
- Fax-Versand
- Downloads
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):
- min = Minute (Zahl von 0 bis 59)
- h = Stunde (Zahl von 0 bis 23)
- dom (day of the month) = Tag (Zahl von 1 bis 31)
- month = Monat (Zahl von 1 bis 12)
- dow (day of the week) = Wochentag (Zahl von 0= Sonntag bis 6=Sonnabend)
- user = Nutzer
- 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
Robert.Warnke@giso.de (copyleft) Robert Warnke, Berlin (Germany) | http://rowa.giso.de
|