Cron & Crontab, erklärt

Lucaine veröffentlicht vor einiger Zeit exzellentes Tutorial zu Cron und Crontab das halte ich für teilenswert. Cron ist eine Art Äquivalent zu geplanten Aufgaben in Windows, nur dass es vom Terminal aus gehandhabt wird. Wer eine visuelle Oberfläche bevorzugt, um das gleiche Ziel zu erreichen, kann dies sehen Ein weiterer Gegenstand.

Was ist Cron?

Der Name cron stammt aus dem griechischen Chronos und bedeutet "Zeit". Unter dem Unix-Betriebssystem ist cron ein regulärer Hintergrundprozessmanager (Daemon), der Prozesse oder Skripte in regelmäßigen Abständen ausführt (z. B. jede Minute, jeden Tag, jede Woche oder jeden Monat). Die Prozesse, die ausgeführt werden müssen, und der Zeitpunkt, zu dem sie ausgeführt werden müssen, sind in der crontab-Datei angegeben.

Wie es funktioniert

Der Cron-Daemon startet von /etc/rc.d/ o / Etc / init.d abhängig von der Verteilung. Cron läuft im Hintergrund und überprüft jede Minute die Crontab-Aufgabentabelle / etc / crontab oder / var / spool / cron auf der Suche nach zu erledigenden Aufgaben. Als Benutzer können wir Befehle oder Skripte mit Aufgaben hinzufügen, um einige Prozesse zu automatisieren. Dies ist beispielsweise nützlich, um die Aktualisierung eines Systems oder eines guten Sicherungssystems zu automatisieren.

Verwandte Artikel:
Tutorial: Installieren Sie die Pakete .tar.gz und .tar.bz2

Was ist Crontab?

Crontab ist eine einfache Textdatei, in der eine Liste von Befehlen gespeichert ist, die zu einem vom Benutzer festgelegten Zeitpunkt ausgeführt werden sollen. Crontab überprüft das Datum und die Uhrzeit der Ausführung des Skripts oder Befehls sowie die Ausführungsberechtigungen und führt dies im Hintergrund durch. Jeder Benutzer kann seine eigene Crontab-Datei haben, in der Tat die / etc / crontab Es wird angenommen, dass es sich um die Crontab-Datei des Root-Benutzers handelt. Wenn normale Benutzer (und sogar Root) ihre eigene Crontab-Datei generieren möchten, verwenden wir den Befehl crontab.

Crontab ist der einfachste Weg, um Cron-Aufgaben auf Mehrbenutzersystemen zu verwalten, entweder als einfacher Systembenutzer oder als Root-Benutzer.

Crontab verwenden

Wir beginnen mit einem einfachen Beispiel.

Wir werden das Update eines Systems automatisieren, um das Ärgernis von "Ich muss immer aktualisieren und das gefällt mir nicht!" Zu beseitigen.

wie man
Verwandte Artikel:
Befehle zur Kenntnis des Systems (Identifizierung von Hardware- und einigen Softwarekonfigurationen)

Zunächst erstellen wir ein Skript. Dieses Skript wird von cron aufgerufen und enthält alle Anweisungen, die wir ausführen möchten. Daher ist es erforderlich, es in mehreren Fällen und auf verschiedene Arten zu testen, bevor es in cron aufgenommen wird. Dabei handelt es sich um ein einfaches Update-Skript wie das folgende:

#! / bin / bash #Skript-Update-Beispiel #Wählen Sie Ihre Distribution # debian-ubuntu # apt-get-Update & apt-get -y-Upgrade #fedora #yum -y-Update #Arch #pacman --noconfirm -Syu

Entfernen Sie das # von Ihrer Distributionslinie. Falls es Ubuntu / Debian ist, beginnt es mit apt-get.

Wir speichern das Skript als update.sh (zB Skriptverzeichnis bei Ihnen zu Hause). Wir ändern die Ausführungsberechtigungen des Skripts mit:

chmod a + x ~ / scripts / update.sh

Wir führen das Skript einige Male aus, um sicherzustellen, dass alles reibungslos funktioniert. Wir ändern das Notwendige (es darf keine Fehler enthalten, andernfalls wiederholt cron einen Fehler nur immer wieder). Fügen Sie nun die Aufgabe unserer Crontab hinzu.

Fügen Sie Aufgaben zu crontab hinzu

Wir führen die Edition des crontab mit crontab -e aus. In einigen Distributionen (wie Ubuntu) haben wir die Möglichkeit, den gewünschten Texteditor auszuwählen. Der Rest bleibt vi. Die Crontab-Datei sieht ungefähr so ​​aus.

# mh dom mon dow Benutzerbefehl

wobei:

  • m entspricht der Minute, in der das Skript ausgeführt wird, der Wert reicht von 0 bis 59
  • h Die genaue Zeit, zu der das 24-Stunden-Format verarbeitet wird, die Werte reichen von 0 bis 23, wobei 0 12:00 Uhr Mitternacht ist.
  • dom bezieht sich auf den Tag des Monats. Sie können beispielsweise 15 angeben, wenn Sie alle 15 Tage ausführen möchten
  • dow bedeutet den Wochentag, er kann numerisch sein (0 bis 7, wobei 0 und 7 Sonntag sind) oder die ersten 3 Buchstaben des Tages auf Englisch: Mo, Di, Mi, Do, Fr, Sa, Sonne.
  • Benutzer Definiert den Benutzer, der den Befehl ausführt. Es kann sich um einen Root-Benutzer oder einen anderen Benutzer handeln, sofern dieser über die Berechtigung zum Ausführen des Skripts verfügt.
  • Befehl bezieht sich auf den Befehl oder den absoluten Pfad des auszuführenden Skripts, Beispiel: /home/usuario/scripts/update.shWenn ein Skript aufgerufen wird, muss es ausführbar sein

Um einige Beispiele für Cron-Aufgaben zu erläutern:

15 10 * * * user /home/user/scripts/update.sh

Das Skript update.sh wird jeden Tag um 10 Uhr ausgeführt

15 22 * * * user /home/user/scripts/update.sh

Das Skript update.sh wird jeden Tag um 10 Uhr ausgeführt

00 10 * * 0 root apt-get -y update Root-Benutzer

Es wird jeden Sonntag um 10:00 Uhr ein Update durchgeführt

45 10 * * Sonnenwurzel apt-get -y update

Der Root-Benutzer führt jeden Sonntag (So) um 10:45 Uhr ein Update durch

30 7 20 11 * user /home/usuario/scripts/update.sh

Am 20. November um 7:30 Uhr führt der Benutzer das Skript aus

30 7 11 11 sun user /home/usuario/scripts/pastel_con_velitas.sh

Am 11. November um 7:30 Uhr und an diesem Sonntag feiert der Benutzer seinen Systemadministrator (das heißt ich).

01 * * * * user /home/usuario/scripts/molestorecordatorio.sh

Eine nervige Erinnerung jede Minute jeder Stunde jeden Tag (NICHT empfohlen).

Sie können weiterhin gehandhabt werden Sonderbereiche:

30 17 * * 1,2,3,4,5

Jeden Tag von Montag bis Freitag um 5:30 Uhr nachmittags.

00 12 1,15,28 * *

Am ersten, fünfzehnten und 12. eines jeden Monats um 28 Uhr mittags (ideal für die Gehaltsabrechnung)

Wenn dies verwirrend ist, handhabt crontab Griffe spezielle Zeichenfolgen zum Definieren dieser Bereiche.

@reboot Einmal beim Start ausführen
@yearly läuft nur einmal im Jahr: 0 0 1 1 *
@ jährlich wie @Jahr
@monthly läuft einmal im Monat, am ersten Tag: 0 0 1 * *
@ wöchentlich Wöchentlich die erste Minute der ersten Stunde der Woche. 0 0 * * 0 ".
@ täglich täglich um 12:00 Uhr 0 0 * * *
@midnight wie @daily
@ Stunde in der ersten Minute jeder Stunde: 0 * * * *

Die Verwendung ist sehr einfach.

@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade

Zu guter Letzt:

Cron Job Management

Crontab-Datei

Ersetzen Sie die vorhandene Crontab-Datei durch eine benutzerdefinierte Datei

crontab -e

Bearbeiten Sie die Crontab-Datei des Benutzers. Jede neue Zeile ist eine neue Crontab-Aufgabe.

Crontab -l

Listen Sie alle Crontab-Aufgaben des Benutzers auf

crontab-d

Löschen Sie die Crontab des Benutzers

crontab -c dir

Definiert das crontab-Verzeichnis des Benutzers (dies muss über die Schreib- und Ausführungsberechtigungen des Benutzers verfügen)

crontab -u Benutzer

Präfix für die Behandlung der Crontab eines anderen Benutzers, Beispiele:

$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u user

Dieses Tool ist, wie viele andere, ausführlicher und detaillierter zu sehen in:

Danke Lucain!