So verwenden Sie Cron unter Linux Unix

Was ist Cron?


Cron ist der Name des Programms, das es Linux-/Unix-Benutzern ermöglicht, automatisch Befehle oder Skripte (Befehlsgruppen) zu einem bestimmten Zeitpunkt oder Datum auszuführen. Es wird normalerweise für Verwaltungsaufgabenbefehle verwendet, wie z. B. Backups, aber es kann verwendet werden, um alles auszuführen. Wie in den Cron-Manpages definiert; Es ist ein Daemon, der geplante Programme ausführt.
In praktisch allen Linux-Distributionen wird die Vixie Cron-Version von der Person verwendet, die sie entwickelt hat, Paul Vixie, einem der großen Gurus von Unix, der unter anderem auch Schöpfer von BIND ist, einem der beliebtesten DNS-Server in der Welt.

Cron starten


Cron ist ein Daemon (Dienst), was bedeutet, dass er nur einmal gestartet werden muss, normalerweise mit demselben Systemstart. Der Cron-Dienst heißt Crond. In den meisten Distributionen wird der Dienst automatisch installiert und beim Systemstart gestartet. Er kann auf verschiedene Arten überprüft werden:
 1) etc / rc.d / init.d / crond status 2) /etc/init.d/crond status crond (pid 507) läuft… 
Falls Sie den Dienstbefehl installiert haben:
 Service-Crond-Status
 crond (pid 507) läuft… 
es kann auch über den ps-Befehl überprüft werden:
 ps -ef | grep crond
Wenn Cron aus irgendeinem Grund nicht funktioniert, können wir es mit starten:
 /etc/rc.d/init.d/crond start Crond starten: [OK]
[color = rgb (0,0,0)] Wenn der Dienst nicht so konfiguriert wurde, dass er von vorne beginnt, reicht es aus, ihn mit dem Befehl chkconfig hinzuzufügen: [/color]
 chkconfig --level 35 crond on 
Damit würden Sie es zu Runlevel 3 und 5 hinzufügen, so dass es beim Systemstart startet.

Verwendung von cron


Es gibt mindestens zwei verschiedene Möglichkeiten, Cron zu verwenden:
Die erste befindet sich im Verzeichnis /etc, wo Sie höchstwahrscheinlich die folgenden Verzeichnisse finden:
  • cron.stündlich
  • cron.daily
  • cron.wöchentlich
  • cron.monatlich
Wenn eine Skriptdatei in einem dieser Verzeichnisse abgelegt wird, wird das Skript je nach Verzeichnis jede Stunde, jeden Tag, jede Woche oder jeden Monat ausgeführt.
Damit das Skript ausgeführt werden kann, muss es ungefähr wie folgt aussehen:
 #! /bin /sh #Skript, das eine Backup-CD erstellt /usr/Dokumente tar czf * backup cp backup / other_directory /
Wir müssen korrigieren, dass die erste Zeile mit # ! beginnt, was anzeigt, dass es sich um ein Bash-Shell-Skript handelt, die anderen Zeilen sind die Befehle, die das Skript ausführen soll. Dieses Skript könnte zum Beispiel backup.sh heißen und wir müssen auch die entsprechenden Berechtigungen ändern, damit es ausgeführt werden kann, zum Beispiel:
 chmod 700 backup.sh ls -l backup.sh -rwx ------ 1 root root 0 20. Juli 09:30 backup.sh
Das "x" in der Berechtigungsgruppe des Besitzers (-rwx) zeigt an, dass es ausgeführt werden kann.
Wenn wir dieses Skript in cron.hourly belassen, dann wird es jede Stunde mit einer Minute eines jeden Tages ausgeführt, später werde ich erklären warum.
Die zweite Möglichkeit, cron auszuführen oder zu verwenden, besteht darin, die Datei /etc/crontab direkt zu manipulieren. Bei der Standardinstallation verschiedener Linux-Distributionen sieht diese Datei etwa so aus:
 cat / etc / crontab SHELL = / bin / bash PATH = / sbin: / bin: / usr / sbin: / usr / bin MAILTO = root HOME = / # run-parts 01 * * * * root run-parts / etc / cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
Die ersten vier Zeilen sind Variablen, die Folgendes anzeigen:
HÜLSEEs ist die 'Shell', unter der der Cron läuft. Wenn nicht angegeben, wird standardmäßig diejenige verwendet, die in der Zeile /etc/passwd angegeben ist, die dem Benutzer entspricht, der cron ausführt.
WEGEnthält oder gibt den Pfad zu den Verzeichnissen an, in denen cron nach dem auszuführenden Befehl sucht. Dieser Pfad unterscheidet sich vom globalen Pfad des Systems oder des Benutzers.
MAIL ANAn wen wird die Ausgabe des Befehls gesendet (falls er eine Ausgabe hat). Cron sendet eine E-Mail an die Person, die in dieser Variable angegeben ist, dh es muss ein gültiger Benutzer des Systems oder eines anderen Systems sein. Wenn nicht angegeben, sendet cron die E-Mail an den Benutzer, der den ausgeführten Befehl besitzt.
HEIMATEs ist das Root- oder Hauptverzeichnis des cron-Befehls. Wenn nicht angegeben, wird das Root-Verzeichnis in der /etc/passwd-Datei angegeben, die dem Benutzer entspricht, der cron ausführt.
Das Kommentare sind mit # gekennzeichnet am Anfang der Zeile.
Danach folgen die Zeilen, die die ordnungsgemäß geplanten Aufgaben ausführen. Es gibt keine Grenzen für die Anzahl der Aufgaben, eine pro Zeile. Felder (Sie sind 7) die diese Zeilen bilden, werden wie folgt gebildet:
 Minute Stunde DayOfMonth Monat DayOf Week Benutzerbefehl
  • Feld: Beschreibung
  • Minute: Es steuert die Minute der Stunde, in der der Befehl ausgeführt wird, dieser Wert muss zwischen 0 und 59 liegen.
  • Zeit: Es steuert die Zeit, zu der der Befehl ausgeführt wird, es wird im 24-Stunden-Format angegeben, die Werte müssen zwischen 0 und 23 liegen, 0 ist Mitternacht.
  • Tag des Monats: Tag des Monats, in dem Sie den Befehl ausführen möchten. Zum Beispiel wird 20 angezeigt, um den Befehl am 20. des Monats auszuführen.
  • Monat: Monat, in dem der Befehl ausgeführt wird, kann numerisch (1-12) oder durch den Namen des Monats in Englisch nur die ersten drei Buchstaben angegeben werden.
  • Wochentag: Tag in der Woche der Befehl wird ausgeführt, er kann numerisch (0-7) oder der Name des Tages in Englisch sein, nur die ersten drei Buchstaben. (0 und 7 = Sonntag)
  • Nutzer: Benutzer, der den Befehl ausführt.
  • Befehl: Befehl, Skript oder Programm, das Sie ausführen möchten. Dieses Feld kann mehrere Wörter und Leerzeichen enthalten.
Ein Sternchen * als Wert in den ersten fünf Feldern zeigt den Anfang-Ende des Feldes an, also alles. Ein * im Minutenfeld zeigt alle Minuten an.
Um dies der ersten 5 Felder und des Sternchens besser zu verstehen, werde ich besser mehrere Beispiele verwenden:
Beispiel:
 Beschreibung 01 * * * * Läuft jeden Tag zu 1 Minute zu jeder Stunde 158 * * * Um 8:15 Uhr jeden Tag 15 20 * * * Um 20:15 Uhr eines jeden Tages 00 5 * * 0 Um 5 Uhr morgens jeden Sonntag * 5 * * So Jede Minute ab 5:00 Uhr um 5:59 Uhr jeden Sonntag 45 19 1 * * Um 19:45 Uhr 1. eines jeden Monats 01 * 20 7 * Zu 1 Minute jeder Stunde am 20. Juli 10 1 * 12 1 Um 01:10 Uhr Jeden Montag im Dezember 00 12 16 * Mi Am 16. eines jeden Monats mittags und das ist Mittwoch 30 9 20 7 4 Um 9:30 Uhr 20. Juli und das ist Donnerstag 30. 9. 20. 7 * Um 9:30 Uhr ab 20. Juli unabhängig vom Wochentag 20 * * * 6 Samstags zur 20. Minute jeder Stunde 20 * * 1 6 Samstags im Januar zur 20. Minute jeder Stunde 
Es ist auch möglich, Listen in den Feldern anzugeben. Die Listen können in Form von 1,2,3,4 oder in Form von 1-4 vorliegen, was gleich wäre. Cron unterstützt in gleicher Weise Erhöhungen in den Listen, die wie folgt gekennzeichnet sind:
 Wert oder Liste / Inkrement
Auch hier sind Listen und Inkremente mit Beispielen leichter verständlich:
Beispiel:
 Beschreibung 59 11 * 1-3 1,2,3,4,5 Um 11:59 Uhr Montag bis Freitag, Januar bis März 45 * 10-25 * 6-7 Bei 45 Minuten aller Stunden von 10 bis 25 aller Monate und dass der Tag Samstag oder Sonntag ist 10,30,50 * * * 1,3,5 Montag, Mittwoch und Freitag um 10, 30 und 50 Minuten zu allen Zeiten * / 15 10-14 * * * Alle 15 Minuten ab 10:00 Uhr um 14:00 Uhr * 12 1-10 / 2 2,8 * Alle Protokolle von 12 Uhr, an den Tagen 1,3,5,7 und 9 im Februar und August. (Das Inkrement im dritten Feld ist 2 und beginnt bei 1) 0 * / 5 1-10,15,20-23 * 3 Alle 5 Stunden von Tag 1 bis 10, Tag 15 und von Tag 20 bis 23 eines jeden Monats und dass der Tag Mittwoch ist 3/3 2/4 2 2 2 Alle 3 Minuten ab Minute 3 (3,6,9 usw.) von Stunden 2,6,10 usw. (alle 4 Stunden ab Stunde 2) am 2. Februar und das ist Dienstag
Wie im letzten Beispiel zu sehen ist, würde die Cron-Aufgabe, die dieser Zeile mit diesen Daten zugewiesen wurde, nur ausgeführt, wenn die 5 Felder (UND) erfüllt sind. Das heißt, damit die Aufgabe ausgeführt werden kann, muss sie am Dienstag, den 2. Februar um 02:03 Uhr sein. Es ist immer ein boolesches UND, das nur dann wahr zurückgibt, wenn alle 5 Felder in der bestimmten Minute wahr sind.
[color = rgb (0,0,0)] Der vorherige Fall macht dann klar, dass: [/color]
Das cron-Programm wird jede Minute aufgerufen und führt die Aufgaben aus, die seine Felder genau in dieser Minute erfüllen.
Einschließlich des Benutzerfelds und des Befehls könnten die Zeilen von crontab dann wie folgt aussehen:
 0 22 * ​​​​* * root /usr/daily backup.sh 0 23 * * 5 root /usr/weekly backup.sh 0 8.20 * * * jcarrillo mail -s "system running" [email protected]
Die ersten beiden Zeilen werden vom Root-Benutzer ausgeführt und die erste führt jeden Tag um 22:00 Uhr das Skript aus, das ein tägliches Backup erstellt. Der zweite führt jeden Freitag um 23 Uhr ein Skript aus, das ein wöchentliches Backup erzeugt. Die dritte Zeile wird vom Benutzer sergio ausgeführt und sie wird jeden Tag um 8 Uhr morgens und 8 Uhr nachts ausgeführt und der Befehl lautet, eine E-Mail an das Konto [email protected] mit dem Betreff "system working" zu senden. eine Möglichkeit für einen Administrator, zu erkennen, dass ein Remote-System zu den angegebenen Zeiten aktiv ist, aber wenn er zu diesen Zeiten keine E-Mail erhält, stimmt etwas nicht.
Wurzel sein, dann ist es möglich, crontab direkt ändern:
 vim / etc / crontab 
Dies wird direkt geändert.

Cron mit mehreren Benutzern ausführen, Befehl crontab


Linux ist ein Mehrbenutzersystem und cron ist eine der Anwendungen, die das gleichzeitige Arbeiten mit mehreren Benutzern unterstützt. Jeder Benutzer kann seine eigene crontab-Datei haben, tatsächlich wird /etc/crontab als die crontab-Datei des Root-Benutzers angenommen, obwohl es kein Problem gibt, dass andere Benutzer eingeschlossen sind, und daher das sechste Feld, das genau angibt, wer der Benutzer ist. die die Aufgabe ausführt und benötigt wird in:
 / etc / crontab

Aber wenn normale Benutzer (und sogar root) ihre eigene crontab-Datei generieren möchten, verwenden wir die crontab-Befehl.
Im Verzeichnis /var/spool/cron (kann je nach Verteilung variieren), wird für jeden Benutzer eine Cron-Datei generiert, obwohl diese Datei Text ist, sollte sie nicht direkt bearbeitet werden.
Es gibt dann zwei Situationen, in denen die crontab-Datei direkt mit dem Befehl generiert wird:
 crontab -e
Mit dem der Standardeditor geöffnet wird (in der Regel vi) mit der Datei leere crontab und wo der Benutzer seine Aufgabentabelle eingibt und diese automatisch als /var / spool / cron / user gespeichert wird.
Der andere Fall ist, dass der Benutzer eine normale Textdatei mit den Einträgen der Aufgaben bearbeitet und sie beispielsweise 'my_cron' nennt, dann wird der Befehl $> crontab my_cron dafür verantwortlich sein, sie als cron-Datei des Benutzers in /var . einzurichten / spule / cron / Benutzer:
 vi my_cron # löscht Dateien aus dem freigegebenen Ordner 0 20 * * * rm -f / home / sergio / shared / * # führt ein Skript aus, das am ersten Tag jedes Monats ein Backup des Dokumentenordners durchführt 0 22 1 * * / home /sergio/month support.sh # alle 5 Stunden von Mo bis Fr, er stellt sicher, dass die Berechtigungen in meinem home 1 * 5 * * * 1-5 chmod -R 640 / home / sergio / *: wq (die file)> ls my_cron> crontab my_cron (auf /var/spool/cron/user gesetzt)
Fassen Sie das oben Gesagte zusammen und ziehen Sie andere Optionen in Betracht für crontab:
 crontab file.cron (setzt file.cron als crontab des Benutzers) crontab -e (öffnet den voreingestellten Editor, in dem die crontab-Datei erstellt oder bearbeitet werden kann) crontab -l (listet die aktuelle crontab des Benutzers, seine Cron-Jobs) crontab -r (entfernt die aktuelle Crontab des Benutzers)
Bei einigen Distributionen ist es beim Bearbeiten von normalen Benutzer-Crontabs erforderlich, den Dienst neu zu starten, damit die Crontab-Dateien in /var/spool/cron erneut gelesen werden können.
 Service-Crond-Neustart 
Um besser zu verstehen, wie Sie Dienste starten / stoppen / neu starten, finden Sie in diesem Artikel weitere Informationen.

Zugriff auf Cron kontrollieren


Mit Cron können Sie steuern, welche Benutzer die Cron-Dienste verwenden können oder nicht. Dies wird auf sehr einfache Weise durch die folgenden Dateien erreicht:
  • /etc/cron.allow
  • /etc/cron.deny
Um zu verhindern, dass ein Benutzer cron bzw. den crontab-Befehl verwendet, reicht es aus, seinen Benutzernamen in die Datei /etc/cron.deny aufzunehmen, um die Verwendung zu ermöglichen, wäre es, seinen Benutzernamen in /etc/cron.allow hinzuzufügen, Wenn Sie aus irgendeinem Grund allen Benutzern die Verwendung von cron verweigern möchten, können Sie das Wort ALL am Anfang von cron.deny schreiben und das würde ausreichen.
 echo ALL >> / etc / cron.deny oder um einen weiteren Benutzer zu cron.allow hinzuzufügen echo juan >> / etc / cron.allow
Existiert weder die Datei cron.allow noch die Datei cron.deny, ist die Nutzung von cron theoretisch ohne Benutzereinschränkungen. Das Hinzufügen von Benutzernamen in cron.allow, ohne eine cron.deny-Datei zu erstellen, hat den gleichen Effekt wie das Erstellen mit dem Wort ALL. Das bedeutet, dass, sobald cron.allow mit einem einzelnen Benutzer erstellt wurde, die anderen Benutzer, die cron verwenden möchten, immer in dieser Datei angegeben werden müssen.
SchlussfolgerungenWir haben über seine Funktionsweise gesprochen, ich hoffe, Sie haben verstanden, dass einige Distributionen wie Red Hat eine Variante wie Anacron enthalten, die einige Cron-Mängel ausgleichen kann, trotzdem wird Cron auf jeder Ebene von der einfachsten bis zur fortschrittlichsten verwendet , es ist ratsam , die Funktionsweise zu verstehen . Wenn Sie Fragen finden oder einen Vorschlag haben, zögern Sie nicht, ihn in die Kommentare zu schreiben.Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave