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 2
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 2

107.2 Lektion 2

Zertifikat:

LPIC-1

Version:

5.0

Thema:

107 Administrative Aufgaben

Lernziel:

107.2 Systemadministrationsaufgaben durch Einplanen von Jobs automatisieren

Lektion:

2 von 2

Einführung

Wie in der vorangegangenen Lektion gesehen, planen Sie mit Cron oder systemd-Timern regelmäßige Aufträge. Manchmal geht es aber um eine Aufgabe, die einmalig zu einem bestimmten Zeitpunkt in der Zukunft auszuführen ist. Hier hilft Ihnen ein anderes mächtiges Werkzeug: at.

Jobplanung mit at

Der Befehl at dient der Planung einmaliger Aufgaben und erfordert nur die Angabe, wann der Auftrag in der Zukunft ausgeführt werden soll. Nach der Eingabe von at in der Befehlszeile, gefolgt von der Zeitangabe, gelangen Sie in die Eingabeaufforderung von at, in der Sie die auszuführenden Befehle definieren. Sie verlassen die Eingabeaufforderung mit der Tastenkombination Strg+D.

$ at now +5 minutes
warning: commands will be executed using /bin/sh
at> date
at> Ctrl+D
job 12 at Sat Sep 14 09:15:00 2019

Der at-Job im obigen Beispiel führt lediglich den Befehl date nach fünf Minuten aus. Ähnlich wie bei cron werden Standardausgabe und Standardfehlerausgabe per E-Mail an Sie gesendet. Beachten Sie, dass der Daemon atd im System laufen muss, damit Sie at für das Jobscheduling verwenden können.

Note

Unter Linux ist der Befehl batch ähnlich wie at, allerdings werden Aufträge von batch nur dann ausgeführt, wenn die Systemlast niedrig genug ist, um dies zu ermöglichen.

Die wichtigsten Optionen für den Befehl at sind:

-c

Gibt die Befehle einer bestimmten Job-ID auf der Standardausgabe aus.

-d

Löscht Aufträge einer Job-ID — ein Alias für atrm.

-f

Liest den Auftrag aus einer Datei statt aus der Standardeingabe.

-l

Listet die anstehenden Aufträge des Benutzers auf. Ist der Benutzer root, werden alle Aufträge aller Benutzer aufgelistet — ein Alias für atq.

-m

Sendet am Ende des Auftrags eine E-Mail an den Benutzer, auch wenn es keine Ausgabe gab.

-q

Gibt eine Queue in Form eines einzelnen Buchstabens von a bis z und von A bis Z an (standardmäßig a für at und b für batch). Jobs in den Warteschlangen mit den höchsten Buchstaben werden mit höherer Priorität ausgeführt. Aufträge, die an eine Warteschlange mit einem Großbuchstaben gesendet werden, werden als batch-Aufträge behandelt.

-v

Zeigt die Zeit an, zu der der Auftrag ausgeführt wird, vor dem Lesen des Auftrags.

Geplante Aufträge mit atq auflisten

Lassen Sie uns nun zwei weitere at-Jobs planen: der erste führt das Skript foo.sh um 09:30 Uhr aus, während der zweite das Skript bar.sh nach einer Stunde ausführt.

$ at 09:30 AM
warning: commands will be executed using /bin/sh
at> ./foo.sh
at> Ctrl+D
job 13 at Sat Sep 14 09:30:00 2019
$ at now +2 hours
warning: commands will be executed using /bin/sh
at> ./bar.sh
at> Ctrl+D
job 14 at Sat Sep 14 11:10:00 2019

Um Ihre ausstehenden Aufträge aufzulisten, nutzen Sie den Befehl atq, der die folgenden Informationen für jeden Auftrag anzeigt: Job-ID, Datum der Ausführung, Uhrzeit der Ausführung, Queue und Benutzername.

$ atq
14      Sat Sep  14 11:10:00 2019 a frank
13      Sat Sep  14 09:30:00 2019 a frank
12      Sat Sep  14 09:15:00 2019 a frank

Remember that the at -l command is an alias for atq.

Note

Wenn Sie atq als root ausführen, zeigt es die Aufträge aller Benutzer in der Warteschlange.

Jobs löschen mit atrm

Um einen at-Job zu löschen, nutzen Sie den Befehl atrm, gefolgt von der Job-ID. Den Auftrag mit der ID 14 löschen Sie zum Beispiel wie folgt:

$ atrm 14

Sie löschen mehrere Aufträge mit atrm, indem Sie mehrere durch Leerzeichen getrennte IDs angeben. Denken Sie daran, dass der Befehl at -d ein Alias für atrm ist.

Note

Wenn Sie atrm als root ausführen, können Sie die Aufträge aller Benutzer löschen.

Zugriff auf Job-Scheduling konfigurieren

Die Berechtigung für normale Benutzer, at-Aufträge zu planen, wird durch die Dateien /etc/at.allow und /etc/at.deny bestimmt. Wenn /etc/at.allow existiert, dürfen nur darin aufgeführte Nicht-Root-Benutzer at-Aufträge planen. Wenn /etc/at.allow nicht existiert, aber /etc/at.deny existiert, dürfen nur darin aufgeführte Nicht-Root-Benutzer keine at-Aufträge planen (in diesem Fall bedeutet eine leere /etc/at.deny-Datei, dass jeder Benutzer at-Aufträge planen darf). Wenn keine dieser Dateien vorhanden ist, hängt der Zugriff des Benutzers auf die Planung von at-Jobs von der verwendeten Distribution ab.

Zeitangaben

Wann ein bestimmter at-Job ausgeführt werden soll, geben Sie in der Form HH:MM an, optional gefolgt von AM oder PM im Falle des 12-Stunden-Formats. Ist die angegebene Zeit bereits vergangen, wird der nächste Tag angenommen. Wollen Sie ein Datum festlegen, zu dem der Job ausgeführt werden soll, ergänzen Sie die Datumsangabe nach der Uhrzeit in einem der folgenden Formate: Monatsname Tag, Monatsname Tag Jahr, MMDDYY, MM/DD/YYY, DD.MM.YY und YYYY-MM-DD).

Die folgenden Schlüsselwörter werden ebenfalls akzeptiert: midnight, noon, teatime (16 Uhr) und now, gefolgt von einem Pluszeichen (+) und einer Zeitspanne (Minuten, Stunden, Tage und Wochen). Schließlich können Sie at anweisen, den Job heute oder morgen auszuführen, indem Sie der Zeit die Wörter today oder tomorrow folgen lassen. Zum Beispiel sorgt at 07:15 AM Jan 01 dafür, dass ein Job am 1. Januar um 07:15 Uhr ausgeführt wird, und at now +5 minutes sorgt für die Ausführung in fünf Minuten. In der Datei timespec unter /usr/share finden Sie weitere Informationen zur Definition von Zeitangaben.

Eine Alternative zu at

Wenn Sie systemd als System- und Dienstmanager verwenden, können Sie einmalige Aufgaben auch mit dem Befehl systemd-run planen. Er dient typischerweise dazu, eine temporäre Timer Unit zu erstellen, damit ein Befehl zu einer bestimmten Zeit ausgeführt wird, ohne dass dazu eine Servicedatei erstellt werden muss. Als root können Sie beispielsweise den Befehl date am 06.10.2019 um 11:30 Uhr wie folgt ausführen:

# systemd-run --on-calendar='2019-10-06 11:30' date

Wenn Sie das Skript foo.sh, das sich in Ihrem aktuellen Arbeitsverzeichnis befindet, nach zwei Minuten ausführen möchten, geben Sie Folgendes ein:

# systemd-run --on-active="2m" ./foo.sh

Consult the manual pages to learn all possible uses of systemd-run with systemd-run(1).

Note

Timer werden im systemd-Journal protokolliert, so dass Sie die Protokolle der verschiedenen Units mit dem Befehl journalctl überprüfen können. Denken Sie daran, dass Sie als normaler Benutzer die Option --user bei den Befehlen systemd-run und journalctl verwenden müssen.

Geführte Übungen

  1. Geben Sie für jede der folgenden Zeitangaben an, welche für at gültig und welche ungültig ist:

    at 08:30 AM next week

    at midday

    at 01-01-2020 07:30 PM

    at 21:50 01.01.20

    at now +4 days

    at 10:15 PM 31/03/2021

    at tomorrow 08:30 AM

  2. Wie überprüfen Sie die Befehle eines Jobs, den Sie mit at geplant haben?

  3. Mit welchen Befehlen überprüfen Sie Ihre ausstehenden at-Jobs? Mit welchen Befehlen würden Sie diese löschen?

  4. Welcher Befehl ist bei systemd die Alternative zu at?

Offene Übungen

  1. Erstellen Sie einen at-Job, der das Skript foo.sh in Ihrem Homeverzeichnis am nächsten 31. Oktober um 10:30 Uhr ausführt. Sie arbeiten als normaler Benutzer.

  2. Melden Sie sich als ein anderer normaler Benutzer am System an und erstellen Sie einen weiteren at-Job, der das Skript bar.sh morgen um 10:00 Uhr ausführt. Das Skript befindet sich im Homeverzeichnis des Benutzers.

  3. Melden Sie sich als ein anderer normaler Benutzer am System an und erstellen Sie einen weiteren at-Job, der das Skript foobar.sh genau nach 30 Minuten ausführt. Das Skript dazu befindet sich ebenfalls im Homeverzeichnis des Benutzers.

  4. Führen Sie nun als root den Befehl atq aus, um die geplanten at-Jobs aller Benutzer zu überprüfen. Was passiert, wenn ein normaler Benutzer diesen Befehl ausführt?

  5. Löschen Sie als root alle ausstehenden at-Jobs mit einem einzigen Befehl.

  6. 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 at, um einmalige Aufträge zu einer bestimmten Zeit auszuführen.

  • Verwalten von at-Jobs.

  • Konfiguration des Benutzerzugriffs auf die at-Jobplanung.

  • Verwendung von systemd-run als Alternative zu at.

Die folgenden Befehle und Dateien wurden in dieser Lektion besprochen:

at

Führt Befehle zu einem bestimmten Zeitpunkt aus.

atq

Listet die ausstehenden at-Jobs des Benutzers auf, sofern der Benutzer nicht der Superuser ist.

atrm

Löscht die per Job-ID angegebenen at-Jobs.

/etc/at.allow und /etc/at.deny

Dateien mit Definitionen von at-Beschränkungen.

systemd-run

Erzeugt und startet vorübergehend eine timer-Einheit als Alternative zu at für die einmalige Jobplanung.

Lösungen zu den geführten Übungen

  1. Geben Sie für jede der folgenden Zeitangaben an, welche für at gültig und welche ungültig ist:

    at 08:30 AM next week

    gültig

    at midday

    ungültig

    at 01-01-2020 07:30 PM

    ungültig

    at 21:50 01.01.20

    gültig

    at now +4 days

    gültig

    at 10:15 PM 31/03/2021

    ungültig

    at tomorrow 08:30 AM monotonic

    ungültig

  2. Wie überprüfen Sie die Befehle eines Jobs, den Sie mit at geplant haben?

    Mit dem Befehl at -c, gefolgt von der Job-ID, überprüfen Sie dessen Befehle. Beachten Sie, dass die Ausgabe auch den größten Teil der Umgebung enthält, die zu dem Zeitpunkt aktiv war, als der Auftrag geplant wurde. Denken Sie daran, dass root die Aufträge aller Benutzer überprüfen kann.

  3. Mit welchen Befehlen überprüfen Sie Ihre ausstehenden at-Jobs? Mit welchen Befehlen würden Sie diese löschen?

    Mit dem Befehl at -l überprüfen Sie Ihre ausstehenden Aufträge — mit at -d löschen Sie sie. at -l ist ein Alias für atq, und at -d ist ein Alias für atrm. Denken Sie daran, dass root die Aufträge aller Benutzer auflisten und löschen kann.

  4. Welcher Befehl ist bei systemd die Alternative zu at?

    Der Befehl systemd-run ist eine Alternative zu at, um einmalige Jobs zu planen. Sie können damit z.B. Befehle zu einem bestimmten Zeitpunkt ausführen, indem Sie einen Calendar Timer oder einen Monotonic Timer relativ zu verschiedenen Startpunkten definieren.

Lösungen zu den offenen Übungen

  1. Erstellen Sie einen at-Job, der das Skript foo.sh in Ihrem Homeverzeichnis am nächsten 31. Oktober um 10:30 Uhr ausführt. Sie arbeiten als normaler Benutzer.

    $ at 10:30 AM October 31
    warning: commands will be executed using /bin/sh
    at> ./foo.sh
    at> Ctrl+D
    job 50 at Thu Oct 31 10:30:00 2019
  2. Melden Sie sich als ein anderer normaler Benutzer am System an und erstellen Sie einen weiteren at-Job, der das Skript bar.sh morgen um 10:00 Uhr ausführt. Das Skript befindet sich im Homeverzeichnis des Benutzers.

    $ at 10:00 AM tomorrow
    warning: commands will be executed using /bin/sh
    at> ./bar.sh
    at> Ctrl+D
    job 51 at Sun Oct 6 10:00:00 2019
  3. Melden Sie sich als ein anderer normaler Benutzer am System an und erstellen Sie einen weiteren at-Job, der das Skript foobar.sh genau nach 30 Minuten ausführt. Das Skript dazu befindet sich ebenfalls im Homeverzeichnis des Benutzers.

    $ at now +30 minutes
    warning: commands will be executed using /bin/sh
    at> ./foobar.sh
    at> Ctrl+D
    job 52 at Sat Oct 5 10:19:00 2019
  4. Führen Sie nun als root den Befehl atq aus, um die geplanten at-Jobs aller Benutzer zu überprüfen. Was passiert, wenn ein normaler Benutzer diesen Befehl ausführt?

    # atq
    52      Sat Oct  5 10:19:00 2019 a dave
    50      Thu Oct 31 10:30:00 2019 a frank
    51      Sun Oct  6 10:00:00 2019 a emma

    Wenn Sie den Befehl atq als root ausführen, werden alle anstehenden at-Aufträge aller Benutzer aufgelistet. Wenn Sie ihn als normaler Benutzer ausführen, werden nur Ihre eigenen anstehenden at-Aufträge aufgelistet.

  5. Löschen Sie als root alle ausstehenden at-Jobs mit einem einzigen Befehl.

    # atrm 50 51 52
  6. Führen Sie als Root den Befehl ls -l /usr/bin/at aus und prüfen Sie die Berechtigungen.

    # ls -l /usr/bin/at
    -rwsr-sr-x 1 daemon daemon 43762 Dec  1  2015 /usr/bin/at

    In dieser Distribution hat der at-Befehl sowohl das SUID- (das s anstelle des Ausführungsflags für den Eigentümer) als auch das SGID-Bit (das s anstelle des Ausführungsflags für die Gruppe) gesetzt, was bedeutet, dass er mit den Rechten des Eigentümers und der Gruppe der Datei ausgeführt wird (daemon für beide). Aus diesem Grund können normale Benutzer Aufträge mit at planen.

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.3 Lokalisierung und Internationalisierung (107.3 Lektion 1)

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.

© 2023 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–2023 The Linux Professional Institute Inc. Alle Rechte vorbehalten.