Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

Crontab unter Linux - mit Beispielen und Tools in Echtzeit

Crontab verstehen
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

Lassen Sie uns Crontab, seine Befehle und verschiedene mit Crontab verbundene Operationen untersuchen.

Wir werden lernen, wie man Aufgaben mit dem Dienstprogramm cron plant, und zuletzt werden wir auch einige der Online-Tools diskutieren, die uns beim Formatieren und Testen der cron-Befehle helfen.

Herkunft

Crontab steht für “Cron Tisch“. Das Wort cron wurde vom griechischen Wort übernommen Chronos was bedeutet Zeit. Crontab ist ein Systemdämonprozess, der automatisch einige Aufgaben und Jobs zum geplanten Zeitpunkt ausführt.

Anwendungsszenarien

Crontab ist nützlich, um verschiedene Vorgänge auszuführen, z. B. das Verwalten automatisierter Sicherungen, das Drehen von Protokolldateien, das Synchronisieren von Dateien zwischen Remotecomputern und das Löschen temporärer Ordner usw. Crontab kann für jede Art von Arbeit verwendet werden, ist jedoch besonders nützlich, wenn wir uns damit befassen Systemadministration Art von Arbeit.

Mit cron, an Administratoren. kann einen Job so planen, dass er zu einer bestimmten Zeit und an einem bestimmten Tag ausgeführt wird.

Mal sehen, wie wir das einrichten können.

Crontab Syntax

Um eine Liste von Befehlen auszuführen, liest das Dienstprogramm cron die Konfigurationsdateien. Um die Zeilen in der zu interpretieren crontab Konfigurationstabellen folgt es einer Crontab-Syntax. Crontab hat sechs Felder und die ersten fünf (1-5) Felder definieren das Datum und die Uhrzeit der Ausführung. Das letzte Feld, dh das sechste Feld, kann ein Benutzername und / oder eine auszuführende Aufgabe / Job / Befehl / Skript sein.

* * * * * USER_NAME COMMAND / SCRIPT-TO-EXECUTE

│ │ │ │ │
│ │ │ │ │
│ │ │ │     | _________   Wochentag (0 - 6) (0 ist Sonntag oder verwenden Sie Namen)
│ │ │ |____________ Monat (1 - 12), * bedeutet jeden Monat
│ │ |______________  Tag des Monats (1 - 31), * bedeutet jeden Tag
│ |________________  Stunde (0 - 23), * bedeutet jede Stunde
|___________________ Minute (0 - 59), * bedeutet jede Minute

Anmerkungen:

  • Das Sternchen (*) wird verwendet, um alle möglichen Werte für ein Feld abzugleichen. Beispielsweise würde ein im Stundenfeld verwendetes Sternchen jeder Stunde entsprechen, oder ein Sternchen im Monatsfeld würde jedem Monat entsprechen.
  • Benutzername ist optional (nur verfügbar, wenn es sich um die System-Crontab-Datei handelt)

Beispiele:

Lassen Sie uns die obige Syntax anhand einiger Beispiele verstehen

1. Planen Sie eine Cron, die täglich um 5 Uhr morgens ausgeführt wird

0 5 * * * /scripts/job.sh

2. Planen Sie eine Cron-Ausführung zweimal täglich um 6 Uhr und 6 Uhr

0 6,18 * * * /scripts/job.sh

3. Planen Sie eine Cron, die jede Minute ausgeführt werden soll

* * * * * /scripts/job.sh

4. Planen Sie einen Cron, der bei jedem ausgeführt wird Monday um 7 Uhr abends.

0 19 * * mon /scripts/job.sh

5. Planen Sie die Ausführung eines Cron alle 15 Minuten.

*/10 * * * * /scripts/job.sh

6. Planen Sie die Ausführung eines Cron in ausgewählten Monaten

* * * feb,jun,oct * /script/job.sh

7. Führen Sie das Shell-Skript aus /home/script/backup.sh am 4. März um 7:25 Uhr

25 7 4 3 * /home/script/backup.sh

8. Planen Sie einen Cron, der alle 30 Sekunden ausgeführt wird

Da wir im Crontab keine Kontrolle über Sekunden haben, können wir dies durch den folgenden zweistufigen Prozess erreichen.

  • Planen wir zunächst eine Aufgabe, die jede Minute ausgeführt wird.
* * * * * /home/scripts/script.sh
  • Jetzt lasst uns verwenden sleep Befehl, um die Ausführung für 30 Sekunden anzuhalten.
* * * * * sleep 30; /home/scripts/script.sh

Die obige Aufgabe stoppt die Ausführung für 30 Sekunden und wird erneut fortgesetzt.

Type of Cron configuration files

Es gibt zwei Arten von Cron-Konfigurationsdateien:

Das UNIX / Linux-System Crontab

Dies erfordert Root-Rechte, da es normalerweise für Systemdienste und kritische Jobs verwendet wird. Das sechste Feld (in der obigen Syntaxbeschreibung) ist der Name eines Benutzers, unter dem der Befehl ausgeführt werden soll. Es gibt dem System crontab die Möglichkeit, Befehle als jeder Benutzer auszuführen.

Der Benutzer Crontab

Benutzer können auch ihre eigenen Cron-Jobs mit dem Befehl crontab installieren. Auch hier ist das sechste Feld (in der obigen Syntaxbeschreibung) der auszuführende Befehl, und alle Befehle werden als der Benutzer ausgeführt, der die crontab erstellt hat.

Jeder Benutzer kann seine eigene crontab-Datei haben, und obwohl dies Dateien in sind /var/spool/cron/crontabs sollen nicht direkt bearbeitet werden. Wir müssen den Befehl crontab verwenden, um unsere eigenen Cron-Jobs zu bearbeiten oder einzurichten.

How does it work?

Der Cron-Dienst (Daemon) läuft im Hintergrund und überprüft ständig (jede Minute) den /etc/crontab Datei und /etc/cron.*/ Verzeichnisse. Es überprüft auch die /var/spool/cron/ Verzeichnis.

Befehle werden ausgeführt von cron Wenn die Felder Minute, Stunde und Monat mit der aktuellen Zeit übereinstimmen und mindestens eines der zweitägigen Felder (Tag des Monats oder Wochentag) mit dem aktuellen Tag übereinstimmt.

Basic Commands

Bestehende Cron-Jobs auflisten

Wir können alle Cron-Jobs auflisten, ohne die crontab-Konfigurationsdatei mit dem folgenden Befehl zu öffnen

crontab -l

Wenn kein Job vorhanden ist, wird die Ausgabe als zurückgegeben

[geekflare@localhost ~]# crontab -l
no crontab for geekflare
[geekflare@localhost ~]#

Wenn der Benutzer bereits einige Jobs hinzugefügt hat, wird dies wie folgt angezeigt.

[geekflare@localhost ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[geekflare@localhost ~]#

Die Cron-Tabelle ist benutzerspezifisch. Dies bedeutet, dass Sie mit einem bestimmten Benutzer angemeldet sein müssen, um die Liste der Cron-Tabellen anzuzeigen.

Listen Sie Cron für einen bestimmten Benutzer auf

Verwenden Sie die Option als, um geplante Jobs eines anderen Benutzers aufzulisten -u (Mitglied) und -l (Liste).

crontab -u another_username -l

Beispiel: crontab -u geekflare -l

Hinzufügen / Ändern von Crontab-Einträgen

Um den Crontab-Eintrag zu bearbeiten, können wir verwenden -e Option wie unten dargestellt.

crontab -e

Mit dem obigen Befehl werden vi-Editoren geöffnet, in denen Sie die Details des Jobs angeben und die Datei speichern. Nach dem Speichern können Sie überprüfen, ob cron konfiguriert ist oder nicht crontab -l.

Hinzufügen / Ändern von Crontab-Einträgen für einen bestimmten Benutzer

Wir können die crontab für einen anderen Benutzer mit dem folgenden Befehl bearbeiten

crontab -u another_username -e

Beispiel: crontab -u geekflare -e

Crontab-Eintrag entfernen

Nutzen Sie den <strong>-r</strong> Parameter mit Crontab, um vollständige geplante Jobs ohne Bestätigung von crontab zu entfernen

crontab -r

Wenn Sie vor dem Löschen geplanter Jobs eine Bestätigung wünschen, verwenden Sie <strong>-i</strong> Option mit -rDies fordert den Benutzer zur Bestätigung auf, bevor die Crontab des Benutzers gelöscht wird.

crontab -i -r
[geekflare@localhost ~]# crontab -i -r
crontab: really delete geekflare's crontab?

Crontab Special String

Abgesehen von der oben besprochenen Syntax können wir auch acht spezielle Zeichenfolgen verwenden, die von Crontab bereitgestellt werden. Das spart uns nicht nur Zeit, sondern verbessert auch die Lesbarkeit.

Spezielle ZeichenfolgeInfos
@rebootNach dem Start einmal ausführen.
@yearlyLaufen Sie einmal im Jahr, dh 0 0 1 1 *
@annuallyDas gleiche wie @yearly
@monthlyEinmal im Monat ausführen, dh 0 0 1 * *
@weeklyLaufen Sie einmal pro Woche, dh 0 0 * * 0
@dailyLaufen Sie einmal am Tag, dh 0 0 * * *
@midnightDas gleiche wie @daily
@hourlyEinmal pro Stunde laufen, dh 0 * * * *

Beispiele für spezielle Crontab-Zeichenfolgen

1. Crontab, um Aufgaben jährlich zu planen

@yearly /scripts/greeting.sh

Wir können das obige ausführen, um einen Neujahrsgruß zu senden. Es wird jedes Jahr in der ersten Minute ausgeführt.

2. Crontab plant die monatliche Ausführung von Aufgaben.

@monthly /scripts/cleanup.sh

Wir können das oben genannte ausführen, um zu Beginn eines jeden Monats einige Bereinigungsaktivitäten durchzuführen.

Ebenso können wir andere Crontab-Spezialzeichenfolgen für wöchentliche, tägliche und stündliche Zwecke verwenden.

Cron Directory

Der Systemadministrator kann einen systemweiten Cron-Zeitplan verwenden, der sich wie unten gezeigt im vordefinierten Cron-Verzeichnis befindet

  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.stündlich
  • /etc/cron.monatlich
  • /etc/cron.weekly

Crontab Realtime Examples

Lassen Sie uns einige der Echtzeitbeispiele diskutieren, die ein Systemadministrator oder IT-Experten normalerweise verwenden.

Leere Dateien und Verzeichnisse löschen

45 0 * * * geekflare find /tmp -type f -empty -delete

Über dem Cron-Ausdruck finden Sie die leeren Dateien und das Verzeichnis von / Tmp Verzeichnis und es wird sie löschen. Dieser Job wird ausgeführt um 12.45 AM täglich. Wir müssen den Benutzernamen angeben, um diesen Job auszuführen. Im obigen Beispiel ist Geekflare Der Benutzer führt eine Cron-Job-Operation aus.

Führen Sie mehrere Aufgaben mit einem einzigen Cron aus

* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh

Mehrere Aufgaben / Jobs können mit einem Semikolon getrennt werden (;) und kann einem einzelnen Cron-Ausdruck zugeordnet werden.

Cron formatting & testing tools

Bisher haben wir Befehle und Syntax von crontab besprochen, um eine Aufgabe zu planen. Was aber, wenn Sie kein Systemadministrator sind und Ihre Aufgabe nicht darin besteht, Cron regelmäßig einzurichten, ist es möglicherweise nicht möglich, sich an die Syntax zu erinnern, und dies eröffnet den Raum für Fehler. Keine Sorge, wir haben eine Lösung für dieses Problem.

Es sind verschiedene Cron-Formatierungswerkzeuge online verfügbar.

# 1. Cron-Job-Generator

Cron-Job-Generator ist eine sehr benutzerfreundliche Benutzeroberfläche, in der Sie die Minute, die Tage und den Pfad des Skripts angeben können, um crontab zu generieren.

Nehmen wir ein Echtzeitbeispiel, in dem ich ausführen muss /home/processMonitor.sh alle 5 Minuten dazwischen Monday bis Freitag.

Also habe ich die folgende Cron-Syntax erhalten, die ich durch Ausführen in meine Crontab einfügen kann

crontab –e
0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Crontab-Generator

Crontab-Generator ist ein weiteres praktisches Tool zum Generieren von Crontab. Mit diesem Tool können Sie auch hinzufügen, ob Sie die Cron-Ausgabe in der Datei speichern oder per E-Mail senden möchten.

# 3. Crontab-Guru

Crontab-Guru ist ein einfacher Online-Editor für Cron-Zeitplanausdrücke. Darüber hinaus bietet es ein nützliches Mittel zur Überwachung Ihres Cronjobs. Alles, was wir tun müssen, ist, einen bereitgestellten Befehl zu kopieren und am Ende der Crontab-Definition anzuhängen. Falls der Cron-Job fehlschlägt oder nicht einmal startet, erhalten Sie eine Benachrichtigungs-E-Mail.

Im folgenden Beispiel wird Job um ausgeführt 04 min.jeden Tag, jeden Monat und jede Woche.

# 4. CRON-Tester

CRON-Tester ermöglicht es uns, die Cron-Zeit- / Datumsdefinitionen zu testen. Es kann vorkommen, dass wir die vorhandene Cron-Syntax zur Fehlerbehebung dekodieren müssen oder nur einen Test durchführen möchten.

Dazu können wir dieses Tool verwenden. Alles, was wir tun müssen, ist, unseren Cron-Ausdruck zu kopieren und in das Cron-Definitionsfeld einzufügen, dann die Anzahl der Iterationen auszuwählen und auf zu klicken Test um die verschiedenen Daten zu sehen, an denen es ausgeführt wird.

Lassen Sie uns einen unserer Cron-Ausdrücke überprüfen 4 3 */2 * *das sollte bei laufen 03:04 (AM) an allen zwei Tagen. Lassen Sie es uns mit dem Cron-Tester überprüfen.

Fazit

Ich hoffe, das Obige hilft Ihnen, Crontab besser zu verstehen und Cron-Jobs einzurichten. Das Planen von Jobs über Cron ist eine der vielen Aufgaben, die von Linux Admin ausgeführt werden. Wenn Sie daran interessiert sind, fortgeschrittene Fähigkeiten zu erlernen, dann schauen Sie sich dies an Kurs.

Danke an unsere Sponsoren
Weitere großartige Lektüre zu Linux
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder