Linux Professional Institute Learning Logo.
Weiter zum Inhalt
  • Home
    • Alle Ressourcen
    • LPI Lernmaterialien
    • Mitmachen
    • Publishing Partner
    • Publishing Partner werden
    • Über uns
    • FAQ
    • Mitwirkende
    • Roadmap
    • Kontakt
  • LPI.org
107.2 Lektion 1
Thema 105: Shells und Shell-Skripte
105.1 Die Shell-Umgebung anpassen und verwenden
  • 105.1 Lektion 1
  • 105.1 Lektion 2
  • 105.1 Lektion 3
105.2 Einfache Skripte anpassen oder schreiben
  • 105.2 Lektion 1
  • 105.2 Lektion 2
Thema 106: Benutzerschnittstellen und Desktops
106.1 X11 installieren und konfigurieren
  • 106.1 Lektion 1
106.2 Grafische Desktops
  • 106.2 Lektion 1
106.3 Barrierefreiheit
  • 106.3 Lektion 1
Thema 107: Administrative Aufgaben
107.1 Benutzer- und Gruppenkonten und dazugehörige Systemdateien verwalten
  • 107.1 Lektion 1
  • 107.1 Lektion 2
107.2 Systemadministrationsaufgaben durch Einplanen von Jobs automatisieren
  • 107.2 Lektion 1
  • 107.2 Lektion 2
107.3 Lokalisierung und Internationalisierung
  • 107.3 Lektion 1
Thema 108: Grundlegende Systemdienste
108.1 Die Systemzeit verwalten
  • 108.1 Lektion 1
  • 108.1 Lektion 2
108.2 Systemprotokollierung
  • 108.2 Lektion 1
  • 108.2 Lektion 2
108.3 Grundlagen von Mail Transfer Agents (MTA)
  • 108.3 Lektion 1
108.4 Drucker und Druckvorgänge verwalten
  • 108.4 Lektion 1
Thema 109: Netzwerkgrundlagen
109.1 Grundlagen von Internetprotokollen
  • 109.1 Lektion 1
  • 109.1 Lektion 2
109.2 Persistente Netzwerkkonfiguration
  • 109.2 Lektion 1
  • 109.2 Lektion 2
109.3 Grundlegende Netzwerkfehlerbehebung
  • 109.3 Lektion 1
  • 109.3 Lektion 2
109.4 Clientseitiges DNS konfigurieren
  • 109.4 Lektion 1
Thema 110: Sicherheit
110.1 Administrationsaufgaben für Sicherheit durchführen
  • 110.1 Lektion 1
110.2 Einen Rechner absichern
  • 110.2 Lektion 1
110.3 Daten durch Verschlüsselung schützen
  • 110.3 Lektion 1
  • 110.3 Lektion 2
How to get certified
  1. Thema 107: Administrative Aufgaben
  2. 107.2 Systemadministrationsaufgaben durch Einplanen von Jobs automatisieren
  3. 107.2 Lektion 1

107.2 Lektion 1

Zertifikat:

LPIC-1

Version:

5.0

Thema:

107 Administrative Aufgaben

Lernziel:

107.2 Systemadministrationsaufgaben durch Einplanen von Jobs automatisieren

Lektion:

1 von 2

Einführung

Eine der wichtigsten Aufgaben eines Systemadministrators ist es, Jobs zu planen, die regelmäßig ausgeführt werden müssen, z.B. Backups, Systemupgrades und viele andere. Dazu dient cron, das sich wiederholende Aufgaben automatisiert.

Aufgaben mit Cron planen

Unter Linux ist cron ein Daemon, der permanent läuft und jede Minute aufwacht, um einen Satz von Tabellen auf auszuführende Aufgaben zu überprüfen. Diese Tabellen heißen Crontabs und enthalten die sogenannten Cronjobs. Cron eignet sich für Server und Systeme, die ständig eingeschaltet sind, da ein Cronjob nur ausgeführt wird, wenn das System zur geplanten Zeit läuft. Es steht sowohl normalen Benutzern zur Verfügung, die jeweils ihre eigenen Crontabs haben, als auch root, der die systemweiten Crontabs verwaltet.

Note

Unter Linux gibt es darüber hinaus die Funktion anacron für Systeme, die ausgeschaltet werden können (wie z.B. Desktops oder Laptops). Nur root kann sie verwenden. IIst der Rechner ausgeschaltet, wenn anacron-Jobs ausgeführt werden müssen, werden diese beim nächsten Einschalten des Rechners ausgeführt. anacron ist nicht Thema der LPIC-1-Zertifizierung.

Benutzer-Crontabs

User Crontabs sind Textdateien zur Planung benutzerdefinierter Cronjobs. Sie sind stets nach dem Benutzerkonto benannt, das sie erstellt, aber der Speicherort dieser Dateien ist abhängig von der verwendeten Distribution (meist ein Unterverzeichnis von /var/spool/cron).

Jede Zeile in einem User Crontab enthält sechs durch ein Leerzeichen getrennte Felder:

  • Die Minute der Stunde (0-59)

  • Die Stunde des Tages (0-23)

  • Der Tag des Monats (1-31)

  • Der Monat des Jahres (1-12)

  • Der Wochentag (0-7 mit Sonntag=0 oder Sonntag=7)

  • Der auszuführende Befehl

Für den Monat des Jahres und den Tag der Woche können Sie die ersten drei Buchstaben des Namens anstelle der entsprechenden Zahl verwenden.

Die ersten fünf Felder geben an, wann der Befehl ausgeführt werden soll, der im sechsten Feld steht. Sie können einen oder mehrere Zeitpunkte definieren. Mehrere Zeitpunkte sind wie folgt anzugeben:

* (Asterisk)

Steht für alle möglichen Werte.

, (Komma)

Gibt eine Liste möglicher Werte an.

- (Bindestrich)

Gibt einen Bereich möglicher Werte an.

/ (Schrägstrich)

Gibt gestaffelte Werte an.

Viele Distributionen enthalten die Datei /etc/crontab als Referenz für das Layout einer cron-Datei. Hier die /etc/crontab-Beispieldatei einer Debian-Installation:

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

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

System-Crontabs

System-Crontabs sind Textdateien zur Verwaltung systemweiter Cronjobs, die nur der Benutzer root bearbeiten kann. /etc/crontab und alle Dateien im Verzeichnis /etc/cron.d sind System-Crontabs.

Die meisten Distributionen enthalten auch die Verzeichnisse /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly und /etc/cron.monthly mit Skripten, die mit der entsprechenden Frequenz ausgeführt werden sollen. Wenn Sie z.B. ein Skript täglich ausführen möchten, können Sie es in /etc/cron.daily ablegen.

Warning

Einige Distributionen verwenden /etc/cron.d/hourly, /etc/cron.d/daily, /etc/cron.d/weekly und /etc/cron.d/monthly. Denken Sie immer daran, die Skripte, die Sie mit cron ausführen möchten, in die richtigen Verzeichnisse zu legen.

Die Syntax von System-Crontabs ähnelt der von Benutzer-Crontabs, erfordert jedoch ein zusätzliches Pflichtfeld, das angibt, welcher Benutzer den Cronjob ausführt. Daher enthält jede Zeile in einer System-Crontab sieben durch ein Leerzeichen getrennte Felder:

  • Die Minute der Stunde (0-59)

  • Die Stunde des Tages (0-23)

  • Der Tag des Monats (1-31)

  • Der Monat des Jahres (1-12)

  • Der Wochentag (0-7 mit Sonntag=0 oder Sonntag=7)

  • Der Name des Accounts, der beim Ausführen des Befehls verwendet werden soll

  • Der auszuführende Befehl

Wie bei Benutzer-Crontabs können Sie mit den Operatoren *, , , - und / mehrere Zeitpunkte in den Zeitfeldern angeben sowie den Monat und den Wochentag mit den ersten drei Buchstaben des Namens statt der entsprechenden Zahl angeben.

Besondere Zeitangaben

In Crontab-Dateien können Sie statt der Zeitangaben auch spezielle Kürzel in den ersten fünf Spalten verwenden:

@reboot

Führt die angegebene Aufgabe einmal nach dem Neustart aus.

@stündlich

Führt die angegebene Aufgabe einmal pro Stunde zu Beginn der Stunde aus.

@daily (oder @midnight)

Führt die angegebene Aufgabe einmal pro Tag um Mitternacht aus.

@weekly

Führt die angegebene Aufgabe einmal pro Woche am Sonntag um Mitternacht aus.

@monthly

Führt die angegebene Aufgabe einmal im Monat am ersten Tag des Monats um Mitternacht aus.

@yearly (oder @annually)

Führt die angegebene Aufgabe einmal pro Jahr am 1. Januar um Mitternacht aus.

Crontab-Variablen

In einer crontab-Datei sind manchmal Variablenzuweisungen definiert, bevor die geplanten Aufgaben deklariert werden. Die üblicherweise gesetzten Umgebungsvariablen sind:

HOME

Das Verzeichnis, in dem cron die Befehle aufruft (standardmäßig das Homeverzeichnis des Benutzers).

MAILTO

Der Name des Benutzers oder die Adresse, an den bzw. die die Standardausgabe und Fehler gesendet werden (standardmäßig der Besitzer der Crontab). Es sind auch mehrere kommagetrennte Werte erlaubt. Ein leerer Wert bedeutet, dass keine Mail gesendet wird.

PATH

Der Pfad, in dem Befehle gefunden werden.

SHELL

Die zu verwendende Shell (standardmäßig /bin/sh).

Benutzer-Cronjobs erstellen

Mit dem Befehl crontab verwalten Sie die Crontab-Dateien einzelner Benutzer. Mit crontab -e bearbeiten Sie Ihre eigene Crontab-Datei oder erstellen sie, falls sie noch nicht existiert:

$ crontab -e
no crontab for frank - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        < ‑‑‑‑ easiest
  3. /usr/bin/emacs24
  4. /usr/bin/vim.tiny

Choose 1-4 [2]:

Standardmäßig öffnet der Befehl crontab den durch die Umgebungsvariablen VISUAL oder EDITOR angegebenen Editor, so dass Sie die Bearbeitung Ihrer Crontab-Datei mit dem bevorzugten Editor vornehmen können. Einige Distributionen, wie im obigen Beispiel gezeigt, erlauben die Auswahl des Editors aus einer Liste, wenn crontab zum ersten Mal ausgeführt wird.

Wenn Sie das Skript foo.sh, das sich in Ihrem Homeverzeichnis befindet, jeden Tag um 10:00 Uhr ausführen möchten, nehmen Sie die folgende Zeile in Ihre Crontab-Datei auf:

0 10 * * * /home/frank/foo.sh

Betrachten Sie die folgenden Crontab-Beispieleinträge:

0,15,30,45 08 * * 2 /home/frank/bar.sh
30 20 1-15 1,6 1-5 /home/frank/foobar.sh

In der ersten Zeile wird das Skript bar.sh jeden Dienstag um 08:00 Uhr, um 08:15 Uhr, um 08:30 Uhr und um 08:45 Uhr ausgeführt. In der zweiten Zeile wird das Skript foobar.sh um 08:30 Uhr von Montag bis Freitag für die ersten fünfzehn Tage im Januar und Juni ausgeführt.

Warning

Obwohl Sie Crontab-Dateien manuell bearbeiten können, ist stets der Befehl crontab vorzuziehen. Die Berechtigungen für die Crontab-Dateien lassen in der Regel nur die Bearbeitung über den Befehl crontab zu.

Neben der oben erwähnten Option -e hat der Befehl crontab weitere nützliche Optionen:

-l

Zeigt den aktuellen Crontab auf der Standardausgabe an.

-r

Entfernt den aktuellen Crontab.

-u

Gibt den Namen des Benutzers an, dessen Crontab geändert werden soll. Diese Option erfordert Root-Rechte und ermöglicht es dem Benutzer root, Benutzer-Crontab-Dateien zu bearbeiten.

System-Cronjobs erstellen

Im Gegensatz zu Benutzer-Crontabs werden System-Crontabs mit einem Editor aktualisiert. Daher müssen Sie nicht den Befehl crontab ausführen, um /etc/crontab und die Dateien in /etc/cron.d zu bearbeiten. Denken Sie daran, dass Sie beim Bearbeiten von System-Crontabs das Konto angeben müssen, das für die Ausführung des Cronjobs verwendet wird (normalerweise der Benutzer root).

Wenn Sie zum Beispiel das Skript barfoo.sh im Verzeichnis /root jeden Tag um 01:30 Uhr ausführen möchten, öffnen Sie /etc/crontab mit Ihrem bevorzugten Editor und fügen folgende Zeile hinzu:

30 01 * * * root /root/barfoo.sh >>/root/output.log 2>>/root/error.log

Im obigen Beispiel wird die Ausgabe des Auftrags an /root/output.log angehängt, Fehler an /root/error.log.

Warning

Sofern die Ausgabe nicht wie im obigen Beispiel in eine Datei umgeleitet wird (oder die Variable MAILTO auf einen leeren Wert gesetzt wird), gehen alle Ausgaben eines Cronjobs per E-Mail an den Benutzer. Gängige Praxis ist es, die Standardausgabe nach /dev/null (oder in eine Datei zur späteren Überprüfung, falls nötig) umzuleiten und die Standardfehlerausgabe nicht umzuleiten. Auf diese Weise wird der Benutzer sofort per E-Mail über etwaige Fehler benachrichtigt.

Zugriff auf Job-Scheduling konfigurieren

Unter Linux dienen die Dateien /etc/cron.allow und /etc/cron.deny dazu, Einschränkungen für crontab zu definieren. Insbesondere können Sie hier Cronjobs für verschiedene Benutzer erlauben oder verbieten. Wenn die Datei /etc/cron.allow existiert, können nur darin aufgeführte Nicht-Root-Benutzer Cronjobs mit dem Befehl crontab planen. Wenn /etc/cron.deny existiert, /etc/cron.allow aber nicht, können Nicht-Root-Benutzer, die in dieser Datei aufgeführt sind, keine Cronjobs mit dem Befehl crontab planen (in diesem Fall bedeutet eine leere /etc/cron.deny, dass jeder Benutzer Cronjobs mit crontab planen darf). Wenn keine dieser Dateien existiert, hängt der Zugriff des Benutzers auf die Planung von Cronjobs von der verwendeten Distribution ab.

Note

Die Dateien /etc/cron.allow und /etc/cron.deny enthalten eine Liste von Benutzernamen, jeweils in einer eigenen Zeile.

Eine Alternative zu Cron

Wenn Sie systemd als System- und Dienstmanager verwenden, steht Ihnen timers als Alternative zu cron für die Aufgabenplanung zur Verfügung. Timers sind systemd-Unitdateien mit dem Suffix .timer. Für jede muss es eine entsprechende Unitdatei geben, die die Unit beschreibt, die aktiviert werden soll, wenn der Timer abläuft. Standardmäßig aktiviert ein timer einen Dienst mit demselben Namen (ohne das Suffix).

Ein Timer enthält einen Abschnitt [Timer], der angibt, wann geplante Aufträge ausgeführt werden sollen. Nutzen Sie die Option OnCalendar=, um Echtzeit-Timer zu definieren, die wie Cronjobs funktionieren (sie basieren auf Ausdrücken für Kalenderereignisse). Die Option OnCalendar= hat die folgende Syntax:

DayOfWeek Year-Month-Day Hour:Minute:Second

DayOfWeek ist optional ist. Die Operatoren *, / und , haben die gleiche Bedeutung wie bei Cronjobs, während Sie mit .. zwischen zwei Werten einen Bereich angeben. Für die Angabe von DayOfWeek können Sie die ersten drei Buchstaben des Namens oder den vollständigen Namen verwenden.

Note

Sie können auch monotone Timer definieren, die nach Ablauf einer bestimmten Zeit ab einem bestimmten Startpunkt (z.B. beim Hochfahren des Geräts oder beim Aktivieren des Zeitgebers selbst) aktiviert werden.

Wenn Sie z.B. den Dienst /etc/systemd/system/foobar.service am ersten Montag jedes Monats um 05:30 Uhr ausführen möchten, fügen Sie die folgenden Zeilen in die entsprechende Unitdatei /etc/systemd/system/foobar.timer ein:

[Unit]
Description=Run the foobar service

[Timer]
OnCalendar=Mon *-*-1..7 05:30:00
Persistent=true

[Install]
WantedBy=timers.target

Sobald Sie den neuen Timer erstellt haben, können Sie ihn aktivieren und starten, indem Sie die folgenden Befehle als root ausführen:

# systemctl enable foobar.timer
# systemctl start foobar.timer

Sie ändern die Frequenz Ihres geplanten Auftrags, indem Sie den Wert OnCalendar ändern und dann den Befehl systemctl daemon-reload ausführen.

Um die Liste der aktiven Timer, sortiert nach Ablaufzeiten, anzuzeigen, nutzen Sie den Befehl systemctl list-timers. Mit der Option --all fügen Sie auch die inaktiven Timer-Units hinzu.

Note

Denken Sie daran, dass systemd die Timer im Journal protokolliert und Sie die Protokolle der verschiedenen Units mit dem Befehl journalctl überprüfen können. Wenn Sie als normaler Benutzer agieren, müssen Sie die Option --user der Befehle systemctl und journalctl setzen.

Statt der oben erwähnten, längeren normalisierten Form stehen einige spezielle Ausdrücke für bestimmte Häufigkeiten der Auftragsausführung bereit:

hourly

Führt die angegebene Aufgabe einmal pro Stunde zu Beginn der Stunde aus.

daily

Führt die angegebene Aufgabe einmal pro Tag um Mitternacht aus.

weekly

Führt die angegebene Aufgabe einmal pro Woche am Montag um Mitternacht aus.

monthly

Führt die angegebene Aufgabe einmal im Monat am ersten Tag des Monats um Mitternacht aus.

yearly

Führt die angegebene Aufgabe einmal pro Jahr am ersten Tag des Monats um Mitternacht aus.

Die vollständige Liste der Zeit- und Datumsangaben finden Sie in den Manpages unter systemd.timer(5).

Geführte Übungen

  1. Geben Sie für jedes der folgenden Crontab-Kürzel die entsprechende Zeitangabe an (d.h. die ersten fünf Spalten in einer Benutzer-Crontab-Datei):

    @hourly

    @daily

    @weekly

    @monthly

    @annually

  2. Geben Sie für jedes der folgenden OnCalendar-Kürzel die entsprechende Zeitangabe an (die längere normalisierte Form):

    hourly

    daily

    weekly

    monthly

    yearly

  3. Erklären Sie die Bedeutung der folgenden Zeitangaben, die in einer Crontab-Datei zu finden sind:

    30 13 * * 1-5

    00 09-18 * * *

    30 08 1 1 *

    0,20,40 11 * * Sun

    00 09 10-20 1-3 *

    */20 * * * *

  4. Erklären Sie die Bedeutung der folgenden Zeitangaben, die in der Option OnCalendar einer Timerdatei verwendet werden:

    *-*-* 08:30:00

    Sat,Sun *-*-* 05:00:00

    *-*-01 13:15,30,45:00

    Fri *-09..12-* 16:20:00

    Mon,Tue *-*-1,15 08:30:00

    *-*-* *:00/05:00

Offene Übungen

  1. Sie sind berechtigt, als normaler Benutzer Jobs mit cron zu planen. Mit welchem Befehl erstellen Sie Ihre eigene Crontab-Datei?

  2. Erstellen Sie einen einfachen geplanten Job, der den Befehl date jeden Freitag um 01:00 Uhr ausführt. Wo sehen Sie die Ausgabe dieses Jobs?

  3. Erstellen Sie einen weiteren geplanten Job, der das Skript foobar.sh jede Minute ausführt und die Ausgabe in die Datei output.log in Ihrem Homeverzeichnis umleitet, so dass nur die Standardfehlerausgabe per E-Mail an Sie gesendet wird.

  4. Schauen Sie sich den Crontab-Eintrag des gerade erstellten geplanten Jobs an. Warum ist es nicht notwendig, den absoluten Pfad der Datei anzugeben, in der die Standardausgabe gespeichert wird? Und warum können Sie den Befehl ./foobar.sh verwenden, um das Skript auszuführen?

  5. Bearbeiten Sie den vorherigen Crontab-Eintrag, indem Sie die Ausgabeumleitung entfernen, und deaktivieren Sie den ersten von Ihnen erstellten Cronjob.

  6. Wie senden Sie die Ausgabe und Fehler Ihres geplanten Jobs per E-Mail an das Benutzerkonto emma? Und wie vermeiden Sie, die Standardausgabe und Fehler per E-Mail zu senden?

  7. Führen Sie den Befehl ls -l /usr/bin/crontab aus. Welches spezielle Bit ist gesetzt und welche Bedeutung hat es?

Zusammenfassung

In dieser Lektion haben Sie gelernt:

  • Verwendung von cron, um Jobs in regelmäßigen Abständen auszuführen.

  • Verwalten von Cronjobs.

  • Konfiguration des Benutzerzugriffs auf die Planung von Cronjobs.

  • Die Rolle der systemd-Timer-Units als Alternative zu Cron.

Die folgenden Befehle und Dateien wurden in dieser Lektion besprochen:

crontab

Verwaltet Crontab-Dateien für einzelne Benutzer.

/etc/cron.allow und /etc/cron.deny

Dateien mit Definitionen von crontab-Beschränkungen.

/etc/crontab

System-Crontab-Datei.

/etc/cron.d

Verzeichnis der System-Crontab-Dateien.

systemctl

Steuert den System- und Dienstmanager systemd. In Bezug auf Timer dient er dazu, diese zu aktivieren und zu starten.

Lösungen zu den geführten Übungen

  1. Geben Sie für jedes der folgenden Crontab-Kürzel die entsprechende Zeitangabe an (d.h. die ersten fünf Spalten in einer Benutzer-Crontab-Datei):

    @hourly

    0 * * * *

    @daily

    0 0 * * *

    @weekly

    0 0 * * 0

    @monthly

    0 0 1 * *

    @annually

    0 0 1 1 *

  2. Geben Sie für jedes der folgenden OnCalendar-Kürzel die entsprechende Zeitangabe an (die längere normalisierte Form):

    hourly

    *-*-* *:00:00

    daily

    *-*-* 00:00:00

    weekly

    Mon *-*-* 00:00:00

    monthly

    *-*-01 00:00:00

    yearly

    *-01-01 00:00:00

  3. Erklären Sie die Bedeutung der folgenden Zeitangaben, die in einer Crontab-Datei zu finden sind:

    30 13 * * 1-5

    Täglich um 13:30 Uhr von Montag bis Freitag

    00 09-18 * * *

    Täglich und stündlich von 09 Uhr bis 18 Uhr

    30 08 1 1 *

    Um 08:30 Uhr am 1. Januar

    0,20,40 11 * * So

    Jeden Sonntag um 11:00 Uhr, 11:20 Uhr und 11:40 Uhr

    00 09 10-20 1-3 *

    Um 09:00 Uhr vom 10. bis 20. Januar, Februar und März

    */20 * * * *

    Alle zwanzig Minuten

  4. Erläutern Sie die Bedeutung der folgenden Zeitangaben, die in der Option OnCalendar einer Timerdatei verwendet werden:

    *-*-* 08:30:00

    Täglich um 08:30 Uhr

    Sat,Sun *-*-* 05:00:00

    Um 05:00 Uhr am Samstag und Sonntag

    *-*-01 13:15,30,45:00

    Um 13:15, 13:30 und 13:45 Uhr am ersten Tag des Monats

    Fri *-09..12-* 16:20:00

    Um 16:20 Uhr jeden Freitag im September, Oktober, November und Dezember

    Mon,Tue *-*-1,15 08:30:00

    Um 08.30 Uhr am 1. oder 15. eines jeden Monats, wenn dieser Tag ein Montag oder Dienstag ist

    *-*-* *:00/05:00

    Alle fünf Minuten

Lösungen zu den offenen Übungen

  1. Sie sind berechtigt, als normaler Benutzer Jobs mit cron zu planen. Mit welchem Befehl erstellen Sie Ihre eigene Crontab-Datei?

    dave@hostname ~ $ crontab -e
    no crontab for dave - using an empty one
    
    Select an editor.  To change later, run 'select-editor'.
      1. /bin/ed
      2. /bin/nano        < ---- easiest
      3. /usr/bin/emacs24
      4. /usr/bin/vim.tiny
    
    Choose 1-4 [2]:
  2. Erstellen Sie einen einfachen geplanten Job, der den Befehl date jeden Freitag um 01:00 Uhr ausführt. Wo sehen Sie die Ausgabe dieses Jobs?

    00 13 * * 5 date

    Die Ausgabe wird per E-Mail an den Benutzer gesendet — abrufbar über den Befehl mail.

  3. Erstellen Sie einen weiteren geplanten Job, der das Skript foobar.sh jede Minute ausführt und die Ausgabe in die Datei output.log in Ihrem Homeverzeichnis umleitet, so dass nur die Standardfehlerausgabe per E-Mail an Sie gesendet wird.

    */1 * * * * ./foobar.sh >> output.log
  4. Schauen Sie sich den Crontab-Eintrag des gerade erstellten geplanten Jobs an. Warum ist es nicht notwendig, den absoluten Pfad der Datei anzugeben, in der die Standardausgabe gespeichert wird? Und warum können Sie den Befehl ./foobar.sh verwenden, um das Skript auszuführen?

    cron ruft die Befehle aus dem Homeverzeichnis des Benutzers auf, es sei denn, in der Datei crontab ist durch die Umgebungsvariable HOME ein anderer Ort angegeben. Aus diesem Grund können Sie den relativen Pfad der Ausgabedatei verwenden und das Skript mit ./foobar.sh ausführen.

  5. Bearbeiten Sie den vorherigen Crontab-Eintrag, indem Sie die Ausgabeumleitung entfernen, und deaktivieren Sie den ersten von Ihnen erstellten Cronjob.

    #00 13 * * 5 date
    */1 * * * * ./foobar.sh

    Um einen Cronjob zu deaktivieren, kommentieren Sie einfach die entsprechende Zeile in der Datei crontab aus.

  6. Wie senden Sie die Ausgabe und Fehler Ihres geplanten Jobs per E-Mail an das Benutzerkonto emma? Und wie vermeiden Sie, die Standardausgabe und Fehler per E-Mail zu senden?

    Um die Standardausgabe und Fehler an emma zu senden, müssen Sie die Umgebungsvariable MAILTO in Ihrer Datei crontab wie folgt setzen:

    MAILTO="emma"

    Um cron mitzuteilen, dass keine Mails gesendet werden sollen, weisen Sie der Umgebungsvariablen MAILTO einen leeren Wert zu.

    MAILTO=""
  7. Führen Sie den Befehl ls -l /usr/bin/crontab aus. Welches spezielle Bit ist gesetzt und welche Bedeutung hat es?

    $ ls -l /usr/bin/crontab
    -rwxr-sr-x 1 root crontab 25104 feb 10  2015 /usr/bin/crontab

    Der Befehl crontab hat das SGID-Bit gesetzt (das s anstelle des Ausführungsflags für die Gruppe), was bedeutet, dass er mit den Rechten der Gruppe (also crontab) ausgeführt wird. Aus diesem Grund können normale Benutzer ihre Crontab-Datei mit dem Befehl crontab bearbeiten. Beachten Sie, dass bei vielen Distributionen die Dateiberechtigungen so eingestellt sind, dass Crontab-Dateien nur über den Befehl crontab bearbeitet werden können.

Linux Professional Insitute Inc. Alle Rechte vorbehalten. Besuchen Sie die LPI Learning Website: https://learning.lpi.org
Dieses Werk steht unter der Lizenz Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International.

Nächste Lektion

107.2 Systemadministrationsaufgaben durch Einplanen von Jobs automatisieren (107.2 Lektion 2)

Nächste Lektion lesen

Linux Professional Insitute Inc. Alle Rechte vorbehalten. Besuchen Sie die LPI Learning Website: https://learning.lpi.org
Dieses Werk steht unter der Lizenz Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International.

LPI ist eine Non-Profit-Organisation.

© 2022 Linux Professional Institute (LPI) ist eine globale Organisation für Zertifizierungsstandards und zur Karriereplanung für Open-Source-Profis. Mit mehr als 200.000 Zertifikatsinhabern ist es die weltweit erste und größte herstellerneutrale Linux- und Open-Source-Zertifizierungsstelle. LPI verfügt über zertifizierte Fachleute in über 180 Ländern, bietet Prüfungen in mehreren Sprachen an und hat Hunderte von Trainingspartnern.

Unser Ziel ist es, wirtschaftliche und kreative Möglichkeiten für alle zu ermöglichen, indem wir Open-Source-Wissens- und Kompetenzzertifizierungen allgemein zugänglich machen.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Kontaktieren Sie uns
  • Datenschutz und Cookie-Richtlinien

Haben Sie einen Fehler entdeckt oder möchten Sie helfen, diese Seite zu verbessern? Lassen Sie es uns wissen.

© 1999–2022 The Linux Professional Institute Inc. Alle Rechte vorbehalten.