Dr. Luthardt's Chemieseiten 

weiter

Best seen with
Get Firefox!

Valid HTML 4.01!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.
Valid CSS!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.

visitors
counter
last modified
08.12.2018

Ihr Browser unterstützt kein CSS. Das für die Darstellung dieser Webseiten intendierte Seitenlayout wird deshalb nicht angewandt / angezeigt. Ist dies nicht Ihre Absicht, so haben Sie wahrscheinlich in Ihrem Browser den Autorenmodus deaktiviert. Dennoch sind diese Seiten les- und navigierbar.
Texte der Infoboxen werden inline ausgegeben.
Bitte erlauben Sie den Autorenmodus oder verwenden Sie einen CSS-fähigen Browser, wenn Sie diese Seiten so anschauen möchten, wie sie vom Autor gestaltet wurden.

Tipps und Tricks

von Michael Luthardtauthor: Michael Luthardt

Anacron Mini-HowTo

Das Programm anacron ist die optimale Lösung zur Zeitsteuerung von Aufgaben (Jobs) auf Rechnern, die nicht immer eingeschaltet sind.

Auf ständig laufenden Rechnern gibt es hierfür Cron. Ansonsten kann man Start-Programme (Startprogramm-Eintrag für User oder ein Befehl in rc.local für Root) festlegen. Beides wird bei jedem Rechnerstart ausgeführt, was man aber gerade für weiter Backup-Programme meist nicht will.

Anacronanacronistic cron
anacronistic: the state or condition of being chronologically out of place
hingegen erlaubt eine übersichtliche und flexible Festlegung beim Rechnerstart oder nach dem Login auszuführender Jobs.
Distributionen nutzen dies in der systemweiten /etc/anacrontab für root-Aufgaben. Mitunter findet man die Meinung, dass auch nur root Anacron-Jobs starten kann. Das ist falsch und liegt vielleicht daran, dass User-Anacrontabs wenig verbreitet sind und ihre Einrichtung – im Gegensatz zu einem Cronjob – deutlich mehr Handarbeit erfordert.

1. Ordnerstruktur anlegen
Im Heimatverzeichnis (∼/) benötigen wir einen, zweckmäßig versteckten, Ordner .anacron und darin die Unterordner

∼/.anacron/
   |— timestamps
   |— user.monthly
   |— user.weekly

2. anacrontab anlegen
In .anacron erstellen wir mit einem Texteditor die anacrontab:

# See anacron(8), anacrontab(5) and run-parts(8) for details.
# Users anacrontab

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=foo

# entries
7      15  user.weekly    run-parts -v /home/foo/.anacron/user.weekly
@monthly   20  user.monthly  run-parts -v /home/foo/.anacron/user.monthly

# eof

Der Aufbau einer Anacrontab ist in den man-pages ausreichend erläutert. Im Vergleich mit der /etc/anacrontab, die man als Vorlage kopieren kann, ist nice weggelassen weil hier nicht notwendig, ebenso --report als Parameter für run-parts. Wichtig ist, dass sich der Jobname, zum Beispiel user.weekly, als Bestandteil des Befehls-Namens, hier wäre das run-parts -v /home/foo/.anacron/user.weekly, wiederfindet.
SHELL muss unbedingt auf /bin/bash geändert werden, weil man sonst mit einem in der bash entwickelten Skript ein anderes Verhalten in der sh bekommen kann. Post geht an den User.
Diese Anacrontab bewirkt, dass der Job user.weekly alle 7 Tage – bei Zeitüberschreitung beim nächsten Anmelden – 15 Minuten nach dem Login startet. Der Job ist die Abarbeitung des Befehls run-parts -v /home/foo/.anacron/user.weekly. run-parts arbeitet alle ausführbaren Dateien in dem als Parameter übergebenen Ordner, hier /home/foo/.anacron/user.weekly, in alphanumerischer Reihenfolge ab. Der Switch -v dient dazu, dass es Post gibt. Der zweite Job, user.monthly, wird jeden Monat an dem Tag im Folgemonat ausgeführt, an dem der Job im Vormonat lief, bei Terminüberschreitung sofort. Die Wartezeit nach dem Login beträgt 20 Minuten.

3. Jobs anlegen
In den Ordner user.weekly kommen alle ausführbaren Dateien, meist Skripte, die wöchentlich (alle 7 Tage) laufen sollen. Achtung Das Programm run-parts verarbeitet nur eingeschränkte Dateinamen, vor allem dürfen Dateien keine .ext-Endung haben.
Zusätzlich zu den eigentlichen Programmen oder Skripten muss es in jedem user.*-ordner eine Datei 0anacron geben:

#!/bin/sh
#
# anacron's cron script
#
# This script updates anacron time stamps. It is called through run-parts
# either by anacron itself or by cron.
#
# The script is called "0anacron" to assure that it will be executed
# _before_ all other scripts.

test -x /usr/sbin/anacron || exit 0
anacron -S /home/foo/.anacron/timestamps -u -t /home/foo/.anacron/anacrontab user.weekly

Das Skript legt im Ordner timestamps für die eigene anacrontab eine Textdatei mit dem Namen des Jobs, hier user.weekly, an. Diese Datei enthält nur das Datum des letzten Laufs in der Form YYYYMMDD. Man kann es für Testzwecke beliebig ändern oder die Datei einfach löschen.
Das 0anacron-Skript für user.monthly sieht genau so aus, nur steht dort natürlich .monthly statt .weekly.

Das folgende Skript backup, die eigentliche Aufgabe, ist ein Beispiel. Es startet hier ein wöchentliches differentielles weiter Backup:

#!/bin/bash
# backup_diff

/usr/bin/notify-send -i info -t 30000 Backup "Differential weekly Backup started."
/home/foo/bin/backup.sh u &>/var/log/backup/`date -I`.diff

Anmerkung: Durch einen Bug in notify-send werden gegenwärtig Meldungen unabhängig vom Parameter -t
stets 10 Sekunden angezeigt.

user.monthly ist analog für das monatliche vollständige Backup aufgebaut.

0anacron und backup müssen natürlich ausführbar sein. Alle Meldungen des Skripts gehen in ein Logfile. Hierzu muss der Ordner /var/log/backup angelegt und für den Benutzer foo beschreibbar werden. Das geht am schnellsten mit sudo install -o foo -g foo -d /var/log/backup1. notify-send muss man gegebenenfalls nachinstallieren und, so man will, die Logdateien in logrotate einbeziehen.

Bleibt nur noch

4. anacron starten
anacron ist kein ständig aktiver Dämon. Für ihn müssen wir einen Startprogramm-Eintrag selbst anlegen:
anacron -s -t /home/foo/.anacron/anacrontab -S /home/foo/.anacron/timestamps
anacron läuft dann als Dämon vom Login bis zur letzten Startzeit in der anacrontab, hier bis 20 Minuten nach dem Login. Entsprechend anacrontab und timestamps fällige Jobs werden gestartet, dann beendet sich der Dämon selbst.
Der Switch -s sorgt dafür, dass Jobs, sollten sie am gleichen Tag fällig sein, in jedem Fall zeitlich nacheinander abgearbeitet werden. Das ist hier wichtig, weil sich sonst differentielles wöchentliches und monatliches vollständiges Backup überschneiden können.

Selbstverständlich kann man beliebige Zeiträume und Namen verwenden, zum Beispiel frida.twodaily usw. An @-Vorgaben gibt es allerdings nur @monthly.

Zum Testen läßt sich anacron mit dem Switch -d aufrufen, das Programm bleibt dann im Vordergrund. Weitere Testmöglichkeiten finden sich in der man-page zu anacron(8).

Achtung Entscheidet man sich später, den Rechner im Dauerbetrieb zu lassen, werden Anacronjobs nicht mehr ausgeführt! In dem Fall einfach über einen Cronjob Anacron starten.

           
1 Ja, install ist ein selbständiges UNIX-Kommando, aber als solches kaum bekannt.

27.10.2013/03.08.2016

 nach oben

Änderungen dieser Seite verfolgen:

it's private by ChangeDetection