Update to r44761:

Editorial review of cron section.

Update to r44702:
Clarify how to review boot messages
This commit is contained in:
Bjoern Heidotting 2016-07-27 20:49:03 +00:00
parent 2d35a56eb5
commit f4f4c61e90
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=49182

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/config/chapter.xml,v 1.151 2011/12/19 14:55:31 bcr Exp $
basiert auf: r44561
basiert auf: r44761
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
@ -252,46 +252,28 @@ run_rc_command "$1"</programlisting>
<filename>/etc/crontab</filename> und
<filename>/var/cron/tabs</filename>. In diesen Dateien wird
festgelegt, welche Programme zu welchem Zeitpunkt von
<application>cron</application> ausgeführt werden sollen.</para>
<application>cron</application> ausgeführt werden sollen.
Jede Zeile in diesen Dateien definiert eine auszuführende
Aufgabe, die auch als <firstterm>Cronjob</firstterm> bezeichnet
wird.</para>
<para>Das Werkzeug verwendet zwei verschiedene
Konfigurationsdateien: die
System-<filename>crontab</filename> und die
Benutzer-<filename>crontab</filename>s. Der einzige Unterschied
zwischen beiden Formaten ist das sechste Feld. In der
System-<filename>crontab</filename> gibt das
sechste Feld den Benutzer an, mit dem
<application>cron</application> das Kommando ausführen wird. In
einer Benutzer-<filename>crontab</filename> werden alle
Kommandos unter dem Benutzer ausgeführt, welcher die
<filename>crontab</filename> erstellt hat. Hier ist das sechste
Feld das letzte Feld. Dies ist ein wichtiges
Sicherheitsmerkmal. Das letzte Feld bezeichnet immer das
Kommando, das ausgeführt werden soll.</para>
Konfigurationsdateien: die System-crontab, welche nicht
verändert werden sollte und die Benutzer-crontabs, die nach
Bedarf erstellt und geändert werden können. Das Format, dass
von diesen beiden Dateien verwendet wird, ist in &man.crontab.5;
dokumentiert. Das Format der System-crontab in
<filename>/etc/crontab</filename> enthält das Feld
<literal>who</literal>, das in der Benutzer-crontab nicht
existiert. Dieses Feld gibt den Benutzer an, mit dem die
Aufgabe ausgeführt wird. Die Aufgaben in den Benutzer-crontabs
laufen unter dem Benutzer, der die crontab erstellt hat.</para>
<note>
<para>Benutzer können mit Benutzer-<filename>crontabs</filename>
ohne <systemitem class="username">root</systemitem>-Rechte
Befehle terminieren. Die Kommandos in
Benutzer-<filename>crontabs</filename> laufen unter dem
Benutzer, der die <filename>crontab</filename> erstellt
hat.</para>
<para>Der Benutzer
<systemitem class="username">root</systemitem> kann, wie jeder
andere Benutzer, eine Benutzer-<filename>crontab</filename>
besitzen. Die Benutzer-<filename>crontab</filename> von
<systemitem class="username">root</systemitem> ist nicht mit
<filename>/etc/crontab</filename>, der
System-<filename>crontab</filename>, zu verwechseln. Da die
System-<filename>crontab</filename> die angegebenen Kommandos
effektiv als
<systemitem class="username">root</systemitem>-Benutzer
aufruft, besteht normalerweise keine Notwendigkeit eine eigene
Benutzer-<filename>crontab</filename> für
<systemitem class="username">root</systemitem> zu
erstellen.</para>
</note>
<para>Benutzer-crontabs erlauben es den Benutzern, ihre eigenen
Aufgaben zu planen. Der Benutzer <systemitem
class="username">root</systemitem> kann auch seine eigene
Benutzer-crontab haben, um Aufgaben zu planen, die nicht in der
System-crontab existieren.</para>
<para>Hier ist ein Beispieleintrag aus der
System-crontab, <filename>/etc/crontab</filename>:</para>
@ -300,7 +282,6 @@ run_rc_command "$1"</programlisting>
#
#$FreeBSD$
# <co xml:id="co-comments"/>
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin <co xml:id="co-env"/>
#
@ -311,8 +292,8 @@ PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin <co xml:id="co-env"/>
<calloutlist>
<callout arearefs="co-comments">
<para>Das Zeichen <literal>#</literal> am Zeilenanfang leitet,
wie in den meisten Konfigurationsdateien, einen Kommentar
<para>Das Zeichen <literal>#</literal> am Zeilenanfang leitet
einen Kommentar
ein. Benutzen Sie Kommentare, um die Funktion eines
Eintrags zu erläutern. Kommentare müssen in einer extra
Zeile stehen. Sie können nicht in derselben Zeile wie ein
@ -333,41 +314,35 @@ PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin <co xml:id="co-env"/>
</callout>
<callout arearefs="co-field-descr">
<para>In dieser Zeile werden sieben Felder beschrieben:
<literal>minute</literal>, <literal>hour</literal>,
<literal>mday</literal>, <literal>month</literal>,
<literal>wday</literal>, <literal>who</literal>
und <literal>command</literal>. Die ersten Felder
legen den Zeitpunkt fest, an dem ein Kommando laufen
soll. Das Feld <literal>minute</literal> legt die
Minute fest, das Feld <literal>hour</literal> die
Stunde, das Feld <literal>mday</literal> den Tag
des Monats. Im Feld <literal>month</literal>
wird der Monat und im Feld <literal>wday</literal>
der Wochentag festgelegt. Alle Felder müssen
numerische Werte enthalten und die Zeitangaben sind
im 24-Stunden-Format. Das Zeichen <literal>*</literal>
<para>In dieser Zeile werden sieben Felder der System-crontab
beschrieben: <literal>minute</literal>,
<literal>hour</literal>, <literal>mday</literal>,
<literal>month</literal>, <literal>wday</literal>,
<literal>who</literal> und <literal>command</literal>. Das
Feld <literal>minute</literal> legt die Minute fest in der
die Aufgabe ausgeführt wird, das Feld
<literal>hour</literal> die Stunde, das Feld
<literal>mday</literal> den Tag des Monats. Im Feld
<literal>month</literal> wird der Monat und im Feld
<literal>wday</literal> der Wochentag festgelegt. Alle
Felder müssen numerische Werte enthalten und die Zeitangaben
sind im 24-Stunden-Format. Das Zeichen <literal>*</literal>
repräsentiert dabei alle möglichen Werte für dieses Feld.
Das Feld <literal>who</literal>
gibt es nur in der Datei <filename>/etc/crontab</filename>
und gibt den Account an, unter dem das Kommando laufen
soll. Im letzten Feld wird schließlich das auszuführende
Kommando angegeben.</para>
Das Feld <literal>who</literal> gibt es nur in der
System-crontab und gibt den Account an, unter dem das
Kommando laufen soll. Im letzten Feld wird schließlich das
auszuführende Kommando angegeben.</para>
</callout>
<callout arearefs="co-main">
<para>Diese Zeile definiert die Zeitpunkte an denen
<command>atrun</command> laufen soll. Dieses Beispiel
verwendet die Zeichenfolge <literal>*/5</literal> gefolgt
von mehreren <literal>*</literal>-Zeichen. Das Zeichen
<literal>*</literal> ist ein Platzhalter und steht
für <emphasis>jede</emphasis> mögliche Zeit.
Diese Zeile führt <command>/usr/libexec/atrun</command>
unter dem <systemitem
class="username">root</systemitem>-Account alle
fünf Minuten aus.</para>
<para>Diese Zeile definiert die Werte für den Cronjob. Die
Zeichenfolge <literal>*/5</literal> gefolgt von mehreren
<literal>*</literal>-Zeichen bedeutet, dass
<command>/usr/libexec/atrun</command> von <systemitem
class="username">root</systemitem> alle fünf Minuten
aufgerufen wird.</para>
<para>Bei den Kommandos können beliebige Optionen
<para>Bei den Kommandos können beliebig viele Optionen
angegeben werden. Wenn das Kommando zu lang ist und
auf der nächsten Zeile fortgesetzt werden soll,
muss am Ende der Zeile das Fortsetzungszeichen
@ -375,51 +350,72 @@ PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin <co xml:id="co-env"/>
</callout>
</calloutlist>
<para>Bis auf das sechste Feld, das den Account angibt, sieht
jede &man.crontab.5; so wie das Beispiel aus. Das sechste Feld
existiert nur in der System-<filename>crontab</filename>. In
den restlichen &man.crontab.5;-Dateien fehlt dieses Feld.</para>
<sect2 xml:id="configtuning-installcrontab">
<title><filename>crontab</filename> installieren</title>
<title>Eine Benutzer-crontab erstellen</title>
<important>
<para>Die nachstehende Prozedur gilt nur für
Benutzer-<filename>crontabs</filename>. Die
System-<filename>crontab</filename> kann mit einem
Editor bearbeitet werden. <command>cron</command> bemerkt,
dass sich die Datei geändert hat und wird die neue
Version benutzen. Lesen Sie bitte auch die FAQ
zur Meldung <link
xlink:href="&url.books.faq;/admin.html#root-not-found-cron-errors">
root: not found</link>.</para>
</important>
<para>Rufen Sie <command>crontab</command> im Editor-Modus auf,
um eine Benutzer-crontab zu erstellen:</para>
<para>Eine Benutzer-<filename>crontab</filename>, beispielsweise
die Datei <filename>crontab-datei</filename>, können Sie mit
jedem Editor erstellen. Die
Benutzer-<filename>crontab</filename> installieren Sie mit dem
nachstehenden Befehl:</para>
<screen>&prompt.user; <userinput>crontab -e</userinput></screen>
<screen>&prompt.root; <userinput>crontab crontab-datei</userinput></screen>
<para>Dies wird die crontab des Benutzers mit dem
voreingestellten Editor öffnen. Wenn der Benutzer diesen
Befehl zum ersten Mal ausführt, wird eine leere Datei
geöffnet. Nachdem der Benutzer eine crontab erstellt hat,
wird die Datei mit diesem Kommando zur Bearbeitung
geöffnet.</para>
<para>Das Argument zum Befehl &man.crontab.5;
ist die vorher erstellte
<filename>crontab-datei</filename>.</para>
<para>Es empfiehlt sich, die folgenden Zeilen an den Anfang der
crontab-Datei hinzuzufügen, um die Umgebungsvariablen zu
setzen und die einzelnen Felder zu beschreiben:</para>
<para>Der Befehl <command>crontab -l</command> zeigt
die installierte crontab-Datei an.</para>
<programlisting>SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
# Order of crontab fields
# minute hour mday month wday command</programlisting>
<para>Benutzer, die eine eigene
<filename>crontab</filename>-Datei ohne Vorlage erstellen
wollen, können den Befehl <command>crontab -e</command>
verwenden. Dieser Befehl ruft einen Editor auf und
installiert beim Verlassen des Editors die
<filename>crontab</filename>-Datei.</para>
<para>Fügen Sie dann für jedes Kommando oder Skript eine Zeile
hinzu, mit der Angabe wann das Kommando ausgeführt werden
soll. In diesem Beispiel wird ein Bourne Shell Skript täglich
um 14:00&nbsp;Uhr ausgeführt. Da der Pfad zum Skript nicht in
<literal>PATH</literal> enthalten ist, wird der vollständige
Pfad zum Skript angegeben:</para>
<para>Wollen Sie die installierte
Benutzer-crontab entfernen, rufen Sie den
<command>crontab -r</command>.</para>
<programlisting>0 14 * * * /usr/home/dru/bin/mycustomscript.sh</programlisting>
<tip>
<para>Bevor Sie ein eigenes Skript verwenden, stellen Sie
sicher, dass es ausführbar ist und dass es mit den wenigen
Umgebungsvariablen von <application>cron</application>
funktioniert. Um die Umgebung nachzubilden, die der obige
<application>cron</application>-Eintrag bei der Ausführung
verwenden würde, benutzen Sie dieses Kommando:</para>
<screen>&prompt.user; <userinput>env -i SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/home/<replaceable>dru</replaceable> LOGNAME=<replaceable>dru</replaceable> <replaceable>/usr/home/dru/bin/mycustomscript.sh</replaceable></userinput></screen>
<para>Die Umgebung von <application>cron</application> wird in
&man.crontab.5; beschrieben. Es ist wichtig, dass
sichergestellt wird, dass die Skripte in der Umgebung von
<application>cron</application> korrekt arbeiten, besonders
wenn Befehle enthalten sind, welche Dateien mit Wildcards
löschen.</para>
</tip>
<para>Wenn Sie mit der Bearbeitung der crontab fertig sind,
speichern Sie die Datei. Sie wird automatisch installiert
und <application>cron</application> wird die darin enthalten
Cronjobs zu den angegebenen Zeiten ausführen. Um die Cronjobs
in einer crontab aufzulisten, verwenden Sie diesen
Befehl:</para>
<screen>&prompt.user; <userinput>crontab -l</userinput>
0 14 * * * /usr/home/dru/bin/mycustomscript.sh</screen>
<para>Um alle Cronjobs einer Benutzer-crontab zu löschen,
verwenden Sie diesen Befehl:</para>
<screen>&prompt.user; <userinput>crontab -r</userinput>
remove crontab for dru? <userinput>y</userinput></screen>
</sect2>
</sect1>
@ -702,8 +698,11 @@ ifconfig_fxp0="inet 10.1.1.1/8"</programlisting>
<para>Die Treiber für gebräuchliche Netzwerkkarten sind schon im
<filename>GENERIC</filename>-Kernel enthalten, so dass die
Karte während des Systemstarts erkannt werden sollte. In
diesem Beispiel findet das System zwei Karten, die den
Karte während des Systemstarts erkannt werden sollte. Die
Systemmeldungen können Sie sich mit
<command>more /var/run/dmesg.boot</command> ansehen. Mit der
Leertaste können Sie durch den Text blättern. In diesem
Beispiel findet das System zwei Karten, die den
&man.dc.4;-Treiber benutzen:</para>
<screen>dc0: &lt;82c169 PNIC 10/100BaseTX&gt; port 0xa000-0xa0ff mem 0xd3800000-0xd38