GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Terminplanung mit cron &At

Einführung

Eine der Herausforderungen (unter den vielen Vorteilen), ein Systemadministrator zu sein, besteht darin, Aufgaben auszuführen, wenn Sie lieber schlafen würden. Beispielsweise müssen einige Aufgaben (einschließlich regelmäßig wiederkehrender Aufgaben) über Nacht oder am Wochenende ausgeführt werden, wenn niemand damit rechnet, Computerressourcen zu verwenden. Abends habe ich keine Zeit, Befehle und Skripte auszuführen, die außerhalb der Geschäftszeiten ausgeführt werden müssen. Und ich möchte nicht um Mitternacht aufstehen müssen, um ein Backup oder ein größeres Update zu starten.

Stattdessen verwende ich zwei Dienstprogramme, mit denen ich Befehle, Programme und Aufgaben zu festgelegten Zeiten ausführen kann. Der cron und bei Dienste ermöglichen es Systemadministratoren, Aufgaben so zu planen, dass sie zu einem bestimmten Zeitpunkt in der Zukunft ausgeführt werden. Der at-Dienst gibt eine einmalige Aufgabe an, die zu einer bestimmten Zeit ausgeführt wird. Der Cron-Dienst kann Aufgaben auf sich wiederholender Basis planen, z. B. täglich, wöchentlich oder monatlich.

1. Cron

Der cron ist ein Software-Dienstprogramm, das von einem Linux-ähnlichen Betriebssystem angeboten wird und die geplante Aufgabe zu einem festgelegten Zeitpunkt automatisiert. Es ist ein Daemon-Prozess , der als Hintergrundprozess läuft und die angegebenen Operationen zum vordefinierten Zeitpunkt ausführt, wenn ein bestimmtes Ereignis oder eine bestimmte Bedingung ohne Eingreifen eines Benutzers ausgelöst wird. Der häufige Umgang mit einer sich wiederholenden Aufgabe ist eine einschüchternde Aufgabe für den Systemadministrator, und daher kann er solche Prozesse so planen, dass sie in regelmäßigen Zeitabständen automatisch im Hintergrund ausgeführt werden, indem er mit cron eine Liste dieser Befehle erstellt .

Es ermöglicht den Benutzern, die geplante Aufgabe regelmäßig unauffällig auszuführen, z. B. das Backup jeden Tag um Mitternacht, das Planen von Updates auf wöchentlicher Basis und das Synchronisieren der Dateien in regelmäßigen Abständen. Cron sucht regelmäßig nach dem geplanten Job, und wenn die geplanten Zeitfelder mit den aktuellen Zeitfeldern übereinstimmen, werden die geplanten Befehle ausgeführt. Es wird automatisch von /etc/init.d gestartet, wenn Sie Mehrbenutzer-Runlevels betreten.

Häufige (und ungewöhnliche) Verwendung von Cron

Ich benutze den cron Dienst, um offensichtliche Dinge zu planen, wie z. B. regelmäßige Backups, die täglich um 2 Uhr morgens stattfinden. Ich verwende ihn auch für weniger offensichtliche Dinge.

  • Die Systemzeiten (d. h. die Betriebssystemzeit) auf meinen vielen Computern werden mithilfe des Network Time Protocol (NTP) eingestellt. Während NTP die Systemzeit festlegt, stellt es nicht die Hardwarezeit ein, die abweichen kann. Ich verwende cron, um die Hardwarezeit basierend auf der Systemzeit einzustellen.
  • Ich habe auch ein Bash-Programm, das ich jeden Morgen früh starte und das auf jedem Computer eine neue „Nachricht des Tages“ (MOTD) erstellt. Es enthält Informationen, wie z. B. die Festplattennutzung, die aktuell sein sollten, um nützlich zu sein.
  • Viele Systemprozesse und -dienste wie Logwatch, logrotate und Rootkit Hunter verwenden den Cron-Dienst, um täglich Aufgaben zu planen und Programme auszuführen.

Der crond Daemon ist der Hintergrunddienst, der die Cron-Funktionalität ermöglicht.

Der Cron-Dienst sucht nach Dateien im Verzeichnis /var/spool/cron und /etc/cron.d Verzeichnisse und die /etc/anacrontab Datei. Der Inhalt dieser Dateien definiert Cron-Jobs, die in verschiedenen Intervallen ausgeführt werden sollen. Die Cron-Dateien der einzelnen Benutzer befinden sich in /var/spool/cron , und Systemdienste und -anwendungen fügen im Allgemeinen Cron-Job-Dateien in /etc/cron.d hinzu Verzeichnis. Die /etc/anacrontab ist ein Sonderfall, der später in diesem Artikel behandelt wird.

Cron unter Linux verwenden

Keine Zeit für Befehle? Das Planen von Aufgaben mit Cron bedeutet, dass Programme ausgeführt werden können, aber Sie nicht lange aufbleiben müssen.

crontab verwenden

Das Cron-Dienstprogramm wird basierend auf Befehlen ausgeführt, die in einer Cron-Tabelle (crontab ). Jeder Benutzer, einschließlich Root, kann eine Cron-Datei haben. Diese Dateien sind standardmäßig nicht vorhanden, können aber im Verzeichnis /var/spool/cron erstellt werden Verzeichnis mit crontab -e Befehl, der auch zum Bearbeiten einer Cron-Datei verwendet wird (siehe Skript unten). Ich empfehle dringend, nicht Verwenden Sie einen Standard-Editor (wie Vi, Vim, Emacs, Nano oder einen der vielen anderen verfügbaren Editoren).

Crontab

Verwenden der crontab Mit dem Befehl können Sie nicht nur den Befehl bearbeiten, sondern auch crond neu starten Daemon, wenn Sie speichern und den Editor verlassen. Die crontab Der Befehl verwendet Vi als zugrunde liegenden Editor, da Vi immer vorhanden ist (selbst bei den einfachsten Installationen).

Neue Cron-Dateien sind leer, daher müssen Befehle von Grund auf neu hinzugefügt werden. Ich habe das folgende Job-Definitionsbeispiel zu meinen eigenen Cron-Dateien hinzugefügt, nur als kurze Referenz, damit ich weiß, was die verschiedenen Teile eines Befehls bedeuten. Fühlen Sie sich frei, es für Ihren eigenen Gebrauch zu kopieren.

crontab -e

Die

Die ersten drei Zeilen im obigen Code richten eine Standardumgebung ein. Die Umgebung muss so eingestellt werden, wie es für einen bestimmten Benutzer erforderlich ist, da cron keinerlei Umgebung bereitstellt. Die SCHALE Die Variable gibt die Shell an, die verwendet werden soll, wenn Befehle ausgeführt werden. Dieses Beispiel gibt die Bash-Shell an. Die MAILTO Die Variable legt die E-Mail-Adresse fest, an die Cron-Job-Ergebnisse gesendet werden. Diese E-Mails können den Status des Cron-Jobs (Backups, Updates usw.) angeben und bestehen aus der Ausgabe, die Sie sehen würden, wenn Sie das Programm manuell über die Befehlszeile ausführen würden. Die dritte Zeile richtet den PATH ein Für die Umwelt. Obwohl der Pfad hier festgelegt ist, stelle ich jeder ausführbaren Datei immer den vollständig qualifizierten Pfad voran.

Im obigen Beispiel gibt es mehrere Kommentarzeilen, die die Syntax beschreiben, die zum Definieren eines Cron-Jobs erforderlich ist. Ich werde diese Befehle aufschlüsseln und dann ein paar weitere hinzufügen, um Ihnen einige erweiterte Funktionen von crontab-Dateien zu zeigen.

01 01 * * * /usr/local/bin/rsbu -vbd1 ; /usr/local/bin/rsbu -vbd2

Das

line führt mein selbst geschriebenes Bash-Shell-Skript rsbu aus , das alle meine Systeme sichert. Dieser Job beginnt jeden Tag um 1:01 Uhr (01 01). Die Sternchen (*) an den Positionen drei, vier und fünf der Zeitangabe sind wie Dateiglobs oder Platzhalter für andere Zeiteinteilungen; sie spezifizieren „jeden Tag des Monats“, „jeden Monat“ und „jeden Tag der Woche“. Diese Zeile führt meine Backups zweimal aus; eine sichert auf einer internen dedizierten Sicherungsfestplatte und die andere auf einem externen USB-Laufwerk, das ich in den Safe mitnehmen kann.

Die folgende Zeile stellt die Hardwareuhr auf dem Computer unter Verwendung der Systemuhr als Quelle einer genauen Zeit ein. Diese Linie soll jeden Tag um 5:03 Uhr (03 05) fahren.

03 05 * * * /sbin/hwclock --systohc

Ich habe den dritten und letzten Cron-Job (auskommentiert) verwendet, um einen dnf auszuführen oder lecker Aktualisierung um 04:25 Uhr am ersten Tag jedes Monats, aber ich habe es auskommentiert, sodass es nicht mehr ausgeführt wird.

25 04 1 * * /usr/bin/dnf -y update

Andere Planungstricks

Lassen Sie uns nun einige Dinge tun, die ein wenig interessanter sind als diese Grundlagen. Angenommen, Sie möchten jeden Donnerstag um 15:00 Uhr einen bestimmten Job ausführen:

00 15 * * Thu /usr/local/bin/mycronjob.sh

Oder vielleicht müssen Sie vierteljährliche Berichte nach dem Ende jedes Quartals erstellen. Der Cron-Dienst hat keine Option für „Der letzte Tag des Monats“, also können Sie stattdessen den ersten Tag des folgenden Monats verwenden, wie unten gezeigt. (Dies setzt voraus, dass die für die Berichte erforderlichen Daten bereitstehen, wenn der Job ausgeführt wird.)

02 03 1 1,4,7,10 * /usr/local/bin/reports.sh

Das folgende Beispiel zeigt einen Job, der zwischen 9:01 Uhr und 17:01 Uhr stündlich eine Minute nach der letzten Stunde ausgeführt wird.

01 09-17 * * * /usr/local/bin/hourlyreminder.sh

Ich

bin auf Situationen gestoßen, in denen ich alle zwei, drei oder vier Stunden einen Job ausführen muss. Dies kann erreicht werden, indem die Stunden durch das gewünschte Intervall geteilt werden, z. B. */3 für alle drei Stunden, oder 6-18/3 zwischen 6:00 und 18:00 Uhr alle drei Stunden zu fahren. Andere Intervalle können ähnlich unterteilt werden; zum Beispiel der Ausdruck */15 in der Minutenposition bedeutet „Job alle 15 Minuten ausführen.“

*/5 08-18/* * * /usr/local/bin/mycronjob.sh

Eine Sache zu beachten :Die Divisionsausdrücke müssen einen Rest von Null ergeben, damit der Job ausgeführt werden kann. Aus diesem Grund wird der Job in diesem Beispiel so eingestellt, dass er alle fünf Minuten (08:05, 08:10, 08:15 usw.) während der geraden Stunden von 8 bis 18 Uhr ausgeführt wird, aber nicht während der ungeraden Stunden. nummerierte Stunden. Beispielsweise wird der Job ab 21:00 Uhr gar nicht ausgeführt. bis 9:59 Uhr

Ich bin sicher, dass Ihnen anhand dieser Beispiele viele weitere Möglichkeiten einfallen werden.

Einschränken des Cron-Zugriffs

Normale Benutzer mit Cron-Zugriff könnten Fehler machen, die beispielsweise dazu führen könnten, dass Systemressourcen (wie Speicher und CPU-Zeit) überlastet werden. Um möglichen Missbrauch zu verhindern, kann der Systemadministrator den Benutzerzugriff einschränken, indem er eine /etc/cron.allow erstellt Datei, die eine Liste aller Benutzer enthält, die berechtigt sind, Cron-Jobs zu erstellen. Der Root-Benutzer kann nicht daran gehindert werden, cron zu verwenden.

Indem verhindert wird, dass Nicht-Root-Benutzer ihre eigenen Cron-Jobs erstellen, kann es für Root erforderlich sein, ihre Cron-Jobs zur Root-Crontab hinzuzufügen. "Aber warte!" du sagst. „Läuft das diese Jobs nicht als root aus?“ Nicht unbedingt. Im ersten Beispiel in diesem Artikel kann das in den Kommentaren angezeigte Feld username verwendet werden, um die Benutzer-ID anzugeben, die ein Job haben soll, wenn er ausgeführt wird. Dadurch wird verhindert, dass die Jobs des angegebenen Nicht-Root-Benutzers als Root ausgeführt werden. Das folgende Beispiel zeigt eine Jobdefinition, die einen Job als Benutzer „Student“ ausführt:

04 07 * * * student /usr/local/bin/mycronjob.sh

Wenn kein Benutzer angegeben ist, wird der Job als der Benutzer ausgeführt, der die Crontab-Datei besitzt, in diesem Fall root.

cron.d

Das Verzeichnis /etc/cron.d Hier installieren einige Anwendungen wie spamAssassin und sysstat Cron-Dateien. Da es keinen spamassassin- oder sysstat-Benutzer gibt, benötigen diese Programme einen Ort, um Cron-Dateien zu finden, also werden sie in /etc/cron.d abgelegt .

Die /etc/cron.d/sysstat Die folgende Datei enthält Cron-Jobs, die sich auf System Activity Reporting (SAR) beziehen. Diese Cron-Dateien haben das gleiche Format wie eine Benutzer-Cron-Datei.

# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A

Die Cron-Datei sysstat hat zwei Zeilen, die Aufgaben ausführen. Die erste Zeile führt die sa1 Programm alle 10 Minuten, um Daten zu sammeln, die in speziellen Binärdateien im Verzeichnis /var/log/sa gespeichert sind Verzeichnis. Dann, jede Nacht um 23:53 Uhr, die sa2 Programm wird ausgeführt, um eine tägliche Zusammenfassung zu erstellen.

Planungstipps

Einige der Zeiten, die ich in den crontab-Dateien einstelle, scheinen eher zufällig zu sein – und in gewissem Maße sind sie es auch. Der Versuch, Cron-Jobs zu planen, kann eine Herausforderung sein, insbesondere wenn die Anzahl der Jobs zunimmt. Normalerweise muss ich nur wenige Aufgaben auf jedem meiner Computer planen, was einfacher ist als in einigen Produktions- und Laborumgebungen, in denen ich gearbeitet habe.

Ein System, das ich verwaltete, hatte etwa ein Dutzend Cron-Jobs, die jede Nacht liefen, und weitere drei oder vier, die am Wochenende oder am Ersten des Monats liefen. Das war eine Herausforderung, denn wenn zu viele Jobs gleichzeitig liefen – insbesondere die Sicherungen und Kompilierungen –, ging dem System der Arbeitsspeicher aus und die Auslagerungsdatei füllte sich fast, was zu einem Zusammenbruch des Systems führte, während die Leistung nachließ, sodass nichts getan wurde. Wir haben mehr Speicher hinzugefügt und die Planung von Aufgaben verbessert. Wir haben auch eine Aufgabe entfernt, die sehr schlecht geschrieben war und viel Speicher beanspruchte.

Die Krone

Der Dienst geht davon aus, dass der Hostcomputer die ganze Zeit läuft. Das heißt, wenn der Computer während eines Zeitraums ausgeschaltet wird, in dem Cron-Jobs geplant waren, werden sie nicht ausgeführt, bis sie das nächste Mal geplant sind. Dies kann zu Problemen führen, wenn es sich um kritische Cron-Jobs handelt. Glücklicherweise gibt es eine weitere Möglichkeit, Jobs in regelmäßigen Abständen auszuführen:anacron .

Anacron

Das anacron-Programm führt die gleiche Funktion wie crond aus, fügt jedoch die Möglichkeit hinzu, Jobs auszuführen, die übersprungen wurden, beispielsweise wenn der Computer ausgeschaltet war oder den Job aus anderen Gründen für einen oder mehrere Zyklen nicht ausführen konnte. Dies ist sehr nützlich für Laptops und andere Computer, die ausgeschaltet oder in den Energiesparmodus versetzt werden.

Sobald

Wird der Computer eingeschaltet und hochgefahren, prüft Anacron, ob konfigurierte Jobs ihre letzte geplante Ausführung verpasst haben. Wenn dies der Fall ist, werden diese Jobs sofort ausgeführt, jedoch nur einmal (unabhängig davon, wie viele Zyklen verpasst wurden). Wenn beispielsweise ein wöchentlicher Job drei Wochen lang nicht ausgeführt wurde, weil das System während Ihres Urlaubs heruntergefahren war, wurde er kurz nach dem Einschalten des Computers ausgeführt, aber nur einmal, nicht dreimal.

Das anacron-Programm bietet einige einfache Optionen zum Ausführen regelmäßig geplanter Aufgaben. Installieren Sie einfach Ihre Skripte in /etc/cron.[hourly|daily|weekly|monthly] Verzeichnisse, je nachdem, wie oft sie ausgeführt werden müssen.

Wie funktioniert das? Die Sequenz ist einfacher, als es zunächst den Anschein hat.

  1. Der Crond-Dienst führt den in /etc/cron.d/0hourly angegebenen Cron-Job aus .
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly

  1. Der in /etc/cron.d/0hourly angegebene Cron-Job führt die run-parts aus Programm einmal pro Stunde.
  2. Die Run-Teile Programm führt alle Skripte aus, die sich in /etc/cron.hourly befinden Verzeichnis.
  3. Die /etc/cron.hourly Verzeichnis enthält das 0anacron -Skript, das das Anacron-Programm unter Verwendung von /etdc/anacrontab ausführt hier gezeigte Konfigurationsdatei.
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
                                                               
#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

  1. Das anacron-Programm führt die Programme aus, die sich in /etc/cron.daily befinden einmal am Tag; es führt die Jobs aus, die sich in /etc/cron.weekly befinden einmal pro Woche und die Jobs in cron.monthly ein Mal per Monat. Beachten Sie die angegebenen Verzögerungszeiten in jeder Zeile, die verhindern, dass sich diese Jobs mit sich selbst und anderen Cron-Jobs überschneiden.

Anstatt komplette Bash-Programme in der cron.X abzulegen Verzeichnisse, installiere ich sie im /usr/local/bin Verzeichnis, was es mir ermöglicht, sie einfach von der Befehlszeile aus auszuführen. Dann füge ich einen Symlink im entsprechenden Cron-Verzeichnis hinzu, z. B. /etc/cron.daily .

Das Anacron-Programm

ist nicht darauf ausgelegt, Programme zu bestimmten Zeiten auszuführen. Es ist vielmehr beabsichtigt, Programme in Intervallen auszuführen, die zu den angegebenen Zeiten beginnen, z. B. 3 Uhr morgens (siehe START_HOURS_RANGE Zeile im Skript oben) an jedem Tag, am Sonntag (zu Beginn der Woche) und am ersten Tag des Monats. Wenn ein oder mehrere Zyklen ausgelassen werden, führt anacron die ausgelassenen Jobs sobald wie möglich einmal aus.

Kurzbefehle

Die /etc/anacrontab Die oben gezeigte Datei zeigt uns einen Hinweis darauf, wie wir Verknüpfungen für einige bestimmte und häufige Zeiten verwenden können. Diese aus einem Wort bestehenden Abkürzungen für Zeitangaben können verwendet werden, um die fünf Felder zu ersetzen, die normalerweise zur Angabe von Zeiten verwendet werden. Das @ Zeichen wird verwendet, um Verknüpfungen zu cron zu identifizieren. Die folgende Liste, die der Manpage crontab(5) entnommen ist, zeigt die Abkürzungen mit ihren äquivalenten Bedeutungen.

  • @reboot :Nach dem Neustart einmal ausführen.
  • @yearly :Einmal im Jahr ausführen, dh. 0 0 1 1 *
  • @annually :Einmal im Jahr ausführen, dh. 0 0 1 1 *
  • @monthly :Einmal im Monat ausführen, dh. 0 0 1 * *
  • @weekly :Einmal pro Woche ausführen, dh. 0 0 * * 0
  • @daily :Einmal täglich ausführen, dh. 0 0 * * *
  • @hourly :Einmal pro Stunde ausführen, dh. 0 * * * *

Diese Verknüpfungen können in allen crontab-Dateien verwendet werden, beispielsweise in /etc/cron.d .

Mehr zum Festlegen von Limits

Ich verwende die meisten dieser Methoden zum Planen von Aufgaben, die auf meinen Computern ausgeführt werden sollen. All diese Aufgaben müssen mit Root-Rechten ausgeführt werden. Meiner Erfahrung nach ist es selten, dass normale Benutzer wirklich einen Cron-Job benötigen. Ein Fall war ein Entwicklerbenutzer, der einen Cron-Job benötigte, um eine tägliche Kompilierung in einem Entwicklungslabor zu starten.

Es ist wichtig, den Zugriff auf Cron-Funktionen durch Nicht-Root-Benutzer einzuschränken. Es gibt jedoch Umstände, unter denen ein Benutzer eine Aufgabe so einstellen muss, dass sie zu vordefinierten Zeiten ausgeführt wird, und cron kann ihm dies erlauben. Viele Benutzer verstehen nicht, wie diese Aufgaben mit Cron richtig konfiguriert werden, und sie machen Fehler. Diese Fehler mögen harmlos sein, aber meistens können sie Probleme verursachen. Durch das Festlegen von funktionalen Richtlinien, die dazu führen, dass Benutzer mit dem Systemadministrator interagieren, ist es viel weniger wahrscheinlich, dass einzelne Cron-Jobs andere Benutzer und andere Systemfunktionen stören.

Es ist möglich, die Gesamtressourcen zu begrenzen, die einzelnen Benutzern oder Gruppen zugewiesen werden können, aber das ist ein anderer Artikel.

Wichtige Punkte

Cron-Syntax:

cron [-f] [-l] [-L loglevel]

Optionen:

  • -f : Wird verwendet, um im Vordergrundmodus zu bleiben und nicht zu dämonisieren.
  • -l : Dies aktiviert LSB-konforme Namen für /etc/cron.d-Dateien.
  • -n : Wird verwendet, um den FQDN beim Senden von E-Mails in den Betreff einzufügen.
  • -L Protokollebene : Diese Option teilt dem Cron mit, was zu den Jobs mit den folgenden Werten protokolliert werden soll:
    • 1 : Es protokolliert den Start aller Cron-Jobs.
    • 2 : Es wird das Ende aller Cron-Jobs protokollieren.
    • 4 : Es werden alle fehlgeschlagenen Jobs protokolliert. Hier wird der Ausgangsstatus nicht gleich Null sein.
    • 8 : Es wird die Prozessnummer aller Cron-Jobs protokollieren.

Die Crontab (Abkürzung für „Cron-Tabelle“) ist eine Liste von Befehlen, um die geplanten Aufgaben zu einem bestimmten Zeitpunkt auszuführen. Es ermöglicht dem Benutzer, geplante Aufgaben hinzuzufügen, zu entfernen oder zu ändern. Die crontab-Befehlssyntax besteht aus sechs durch Leerzeichen getrennten Feldern, wobei die ersten fünf die Zeit zum Ausführen der Aufgabe und das letzte den Befehl darstellen.

  • Minute (enthält einen Wert zwischen 0-59)
  • Stunde (hält einen Wert zwischen 0-23)
  • Tag des Monats (enthält einen Wert zwischen 1 und 31)
  • Monat des Jahres (enthält einen Wert zwischen 1-12 oder Jan-Dez, die ersten drei Buchstaben des Monatsnamens müssen verwendet werden)
  • Wochentag (enthält einen Wert zwischen 0-6 oder So-Sa, auch hier sind die ersten drei Buchstaben des Tages zu verwenden)
  • Befehl
Die Regeln, die das Format von Datums- und Uhrzeitfeldern wie folgt regeln:
  • Wenn eines der ersten fünf Felder auf ein Sternchen (*) gesetzt ist, steht es für alle Werte des Feldes. Um beispielsweise einen Befehl täglich auszuführen, können wir ein Sternchen (*) in das Wochenfeld einfügen.
  • Man kann auch einen Zahlenbereich verwenden, der durch einen Bindestrich (-) im Zeit- und Datumsfeld getrennt ist, um mehr als einen zusammenhängenden Wert einzuschließen, aber nicht alle Werte des Felds. Beispielsweise können wir die 7-10 verwenden, um einen Befehl von Juli bis Oktober auszuführen.
  • Der Kommaoperator (, ) wird verwendet, um eine Liste von Zahlen einzuschließen, die fortlaufend sein können oder nicht. Zum Beispiel bedeutet „1, 3, 5“ im Wochenfeld, dass ein Befehl jeden Montag, Mittwoch und Freitag ausgeführt wird.
  • Ein Schrägstrich (/) ist enthalten, um eine bestimmte Anzahl von Werten zu überspringen. Beispielsweise gibt „*/4“ im Stundenfeld „alle 4 Stunden“ an, was 0, 4, 8, 12, 16, 20 entspricht.
Benutzern erlauben, Cron-Jobs auszuführen:
  • Der Benutzer muss in dieser Datei aufgeführt sein, um Cron-Jobs ausführen zu können, falls die Datei existiert.
/etc/cron.allow
  • Wenn die Datei cron.allow nicht existiert, aber die Datei cron.deny, dann darf ein Benutzer nicht in dieser Datei aufgeführt sein, um den Cron-Job ausführen zu können.
/etc/cron.deny

Hinweis: Wenn keine dieser Dateien vorhanden ist, darf nur der Superuser (Systemadministrator) einen bestimmten Befehl verwenden.
Beispielbefehle:

  • /home/folder/gfg-code.sh stündlich von 9:00 bis 18:00 Uhr, täglich.
00 09-18 * * * /home/folder/gfg-code.sh
  • /usr/local/bin/backup um 23:30 Uhr an jedem Wochentag.
30 23 * * Mon, Tue, Wed, Thu, Fri /usr/local/bin/backup
  • Führen Sie sample-command.sh um 07:30, 09:30, 13:30 und 15:30 Uhr aus.
30 07, 09, 13, 15 * * * sample-command.sh

Die folgenden Punkte sollten bei der Arbeit mit Cron beachtet werden:

  • Haben Sie eine Quellversionskontrolle, um die Änderungen an den Cron-Ausdrücken zu verfolgen und zu verwalten.
  • Organisieren Sie die geplanten Jobs nach ihrer Wichtigkeit oder Häufigkeit und gruppieren Sie sie nach ihrer Aktion oder dem Zeitraum.
  • Testen Sie den geplanten Job, indem Sie anfangs eine hohe Frequenz verwenden.
  • Schreiben Sie keinen komplexen Code oder mehrere Pipings und Umleitungen direkt in den Cron-Ausdruck. Schreiben Sie sie stattdessen in ein Skript und planen Sie das Skript im Cron-Tab.
  • Verwenden Sie Aliase, wenn dieselben Befehle häufig wiederholt werden.
  • Vermeiden Sie das Ausführen von Befehlen oder Skripten über cron als Root-Benutzer.

2. Bei

auf Befehl ist ein Befehlszeilendienstprogramm, das verwendet wird, um einen Befehl zu planen, der zu einem bestimmten Zeitpunkt in der Zukunft ausgeführt werden soll. Mit auf Befehl erstellte Jobs werden nur einmal ausgeführt. Der auf Befehl kann verwendet werden, um jedes Programm oder jede E-Mail zu einem beliebigen Zeitpunkt in der Zukunft auszuführen. Es führt Befehle zu einer bestimmten Zeit aus und akzeptiert Zeiten der Form HH:MM, um einen Job zu einer bestimmten Tageszeit auszuführen. Der folgende Ausdruck wie Mittag, Mitternacht, Teezeit, morgen, nächste Woche, nächsten Montag usw. könnte mit auf Befehl verwendet werden um einen Job zu planen.

Syntax:

at [OPTION...] runtime

Installation von at-Befehl

Für Ubuntu/Debian:

sudo apt-get update
sudo apt-get install at

Für CentOS/Fedora:

sudo yum install at

Arbeiten mit Befehl

1. Befehl zum Auflisten der ausstehenden Jobs des Benutzers:

at -l

oder

atq

2. Planen Sie einen Job für den kommenden Montag zwanzig Minuten später als die aktuelle Zeit:

at Monday +20 minutes

3. Planen Sie einen Auftrag so, dass er am 12. August 2020 um 1:45 Uhr ausgeführt wird:

at 1:45 081220

4. Planen Sie einen Job so, dass er in vier Tagen um 15:00 Uhr ausgeführt wird:

at 3pm + 4 days

5. Planen Sie einen Job, um das System heute um 4:30 Uhr herunterzufahren:

# echo "shutdown -h now" | at -m 4:30

6. Planen Sie einen Job, der in fünf Stunden ausgeführt werden soll:

at now +5 hours

7. Der Befehl at -r oder atrm wird zum Löschen von Job verwendet, hier zum Löschen von Job 11 .

 at -r 11

oder

atrm 11

Linux
  1. Planen Sie eine Aufgabe mit dem Linux-Befehl at

  2. Zum ersten Mal mit Linux:30 Installationsgeschichten

  3. Holen Sie sich die Dateierstellungszeit mit Python unter Linux

  4. Planen einer regelmäßigen Veranstaltung:Cron/Cron-Alternativen (einschließlich Sellerie)

  5. Cron mit Notify-Send

Planen von Cron-Jobs mit Crontab

Linux-Dateizeitstempel mit Beispielen erklärt

Zeiterfassung mit Timewarrior auf der Kommandozeile

So automatisieren Sie Aufgaben mit Cron-Jobs in Linux

Crontab in Linux mit Beispielen verstehen

Führen Sie Befehle mit einem Zeitlimit in Ubuntu 20.04 aus