Verwendung von Cron unter Linux Unix

1.png

Was ist Cron?

Cron ist der Name des Programms, mit dem Linux / Unix-Benutzer zu einer bestimmten Zeit oder einem bestimmten Datum automatisch Befehle oder Skripte (Befehlsgruppen) ausführen können. Es wird normalerweise für Verwaltungsaufgabenbefehle wie z. B. Sicherungen verwendet, kann jedoch für die Ausführung beliebiger Aktionen verwendet werden. Wie in den Cron-Handbuchseiten 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. Dies ist Paul Vixie, einer der großen Gurus von Unix, der unter anderem auch den DNS-Server BIND erstellt hat am beliebtesten 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 wird vom Start des Systems aus gestartet. Es gibt verschiedene Möglichkeiten, dies zu überprüfen:

 1) Status etc / rc.d / init.d / crond 2) /etc/init.d/crond Status crond (pid 507) läuft ... 

Falls Sie den Dienstbefehl installiert haben:

 Servicestatus 
 crond (pid 507) läuft ... 

Sie können auch den Befehl ps ausführen:

 ps -ef | grep crond 

Wenn cron aus irgendeinem Grund nicht funktioniert, können wir damit beginnen:

 /etc/rc.d/init.d/crond start Startpunkt: [OK] 

[/color] [color = rgb (0,0,0)] Wenn der Dienst nicht für einen Neustart von Anfang an konfiguriert wurde, reicht es aus, ihn mit dem Befehl chkconfig hinzuzufügen: [/ color]

 chkconfig --level 35 crond on 

Damit würden Sie es den Ausführungsebenen 3 und 5 hinzufügen, so dass es zum Zeitpunkt des Systemstarts startet.

Cron benutzen

Es gibt mindestens zwei verschiedene Möglichkeiten, cron zu verwenden:
Das erste befindet sich im Verzeichnis / etc, in dem Sie höchstwahrscheinlich die folgenden Verzeichnisse finden:

  • cron.hourly
  • cron.daily
  • cron.weekly
  • cron.monatlich

Wenn eine Skriptdatei in einem dieser Verzeichnisse abgelegt ist, 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 so ​​aussehen:

 #! / bin / sh #script, das eine Sicherung generiert cd / usr / documents tar czf * backup cp backup / other_directory / 

Wir müssen korrigieren, dass die erste Zeile mit #! Beginnt, was darauf hinweist, 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) gibt an, dass es ausgeführt werden kann.

Wenn dieses Skript in cron.hourly verbleibt, wird es stündlich mit einer Minute pro Tag ausgeführt. Später erkläre ich, warum.

Die zweite Möglichkeit, cron auszuführen oder zu verwenden, besteht darin, die Datei / etc / crontab direkt zu bearbeiten. In der Standardinstallation mehrerer Linux-Distributionen sieht diese Datei folgendermaßen aus:

 Katze / etc / crontab SHELL = / bin / bash PATH = / sbin: / bin: / usr / sbin: / usr / bin MAILTO = root HOME = / # Laufteile 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 angeben:

SHELL
Es ist die ‘Shell’, unter der cron ausgeführt wird. Wenn dies nicht angegeben ist, wird standardmäßig die in der Zeile / etc / passwd angegebene verwendet, die dem Benutzer entspricht, der cron ausführt.

PFAD
Enthä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.

POST ZU
Es ist, an wen die Befehlsausgabe gesendet wird (wenn es eine Ausgabe hat). Cron sendet eine E-Mail an den in dieser Variablen angegebenen Benutzer, dh er muss ein gültiger Benutzer des Systems oder eines anderen Systems sein. Ist dies nicht der Fall, sendet cron die E-Mail an den Benutzer, dem der ausgeführte Befehl gehört.

HOME
Es ist das Root- oder Hauptverzeichnis des Befehls cron. Wenn es nicht angegeben wird, ist das Root-Verzeichnis dasjenige, das in der Datei / etc / passwd angegeben ist, die dem Benutzer entspricht, der cron ausführt.

Kommentare werden am Zeilenanfang mit # gekennzeichnet .

See also  Tipps zur Wiederverwendung von Inhalten aus Ihrem Blog innerhalb Ihrer Inhaltsstrategie

Nach dem oben Gesagten gibt es die Zeilen, die die richtig programmierten Aufgaben ausführen. Es gibt keine Begrenzung für die Anzahl der Aufgaben, eine pro Zeile. Die Felder (7) , die diese Zeilen bilden, werden wie folgt gebildet:

 Minute Stunde DiaDelMes Monat Wochentag Benutzerbefehl 
  • Feld: Beschreibung
  • Minute: Steuert die Minute der Ausführung des Befehls. Dieser Wert muss zwischen 0 und 59 liegen.
  • Zeit: Steuert die Zeit, zu der der Befehl ausgeführt wird. Er wird im 24-Stunden-Format angegeben. Die Werte müssen zwischen 0 und 23 liegen. 0 ist Mitternacht.
  • Tag des Monats: Tag des Monats, an dem Sie den Befehl ausführen möchten. Beispielsweise würde 20 angegeben, 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, an dem der Befehl ausgeführt wird. Er kann numerisch (0-7) sein oder mit dem Namen des Tages in Englisch, nur die ersten drei Buchstaben. (0 und 7 = Sonntag)
  • Benutzer: 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 gibt den Anfang und das Ende des Feldes an, dh alles. Ein * im Minutenfeld zeigt alle Minuten an.

Um dies anhand der ersten 5 Felder und des Sterns besser zu verstehen, werde ich einige Beispiele besser verwenden:

Beispiel:

 Beschreibung 01 * * * * Es läuft zu jeder vollen Stunde jeden Tages in der ersten Minute 158 * * * Jeden Tag um 8:15 Uhr 15 20 * * * Jeden Tag um 20.15 Uhr 00 5 * * 0 Jeden Sonntag um 5 Uhr * 5 * * Sonne Jede Minute ab 5:00 Uhr um 5:59 Uhr jeden sonntag 45 19 1 * * Am ersten eines jeden Monats um 19:45 Uhr 01 * 20 7 * In Minute 1 jeder Stunde des 20. Juli 10 1 * 12 1 Jeden Montag im Dezember um 1:10 Uhr 00 12 16 * Wen Am 16. eines jeden Monats mittags und das ist Mittwoch 30 9 20 7 4 Am 20. Juli um 9:30 Uhr und das ist Donnerstag 30 9 20 7 * Am 20. Juli um 9:30 Uhr, unabhängig vom Wochentag 20 * * * 6 Samstags jeweils zur 20. Minute 20 * * 1 6 Zur 20. Minute jeder vollen Stunde am Samstag im Januar 

In den Feldern können auch Listen angegeben werden. Die Listen können in der Form von 1,2,3,4 oder in der Form von 1-4 vorliegen, die gleich wären. Cron unterstützt ebenfalls Inkremente in den Listen, die wie folgt angegeben sind:

 Wert oder Liste / Erhöhung 

Auch hier ist es einfacher, die Listen und Inkremente anhand von Beispielen zu verstehen:

See also  So ändern Sie die Sprache Facebook PC 2020

Beispiel:

 Beschreibung 59 11 * 1-3 1,2,3,4,5 Montag bis Freitag von Januar bis März um 11:59 Uhr 45 * 10-25 * 6-7 Zur Minute 45 aller Stunden von den Tagen 10 bis 25 aller Monate und an diesem Tag ist Samstag oder Sonntag 10,30,50 * * * 1,3,5 Montags, mittwochs und freitags um 10, 30 und 50 Minuten aller Stunden * / 15 10-14 * * * Alle fünfzehn Minuten ab 10:00 Uhr um 14:00 Uhr * 12 1-10 / 2 2,8 * Alle Minuten der 12 des Tages, an den Tagen 1,3,5,7 und 9 von Februar und August. (Die Erhöhung 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 Tag 20 bis 23 eines jeden Monats und an diesem Tag ist Mittwoch 3/3 2/4 2 2 2 Alle 3 Minuten ab Minute 3 (3,6,9 usw.) der 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, wird die Cron-Task, 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 es sich um einen Dienstag, den 2. Februar, um 02:03 Uhr handeln. Es ist immer ein Boolesches UND, das nur dann wahr wird, wenn die 5 Felder in der bestimmten Minute wahr sind.

[/color] [color = rgb (0,0,0)] Der vorherige Fall macht deutlich, dass:

Das cron-Programm wird jede Minute aufgerufen und führt die Aufgaben aus, die seine Felder in genau dieser Minute erfüllen.

Einschließlich des Benutzerfelds und des Befehls könnten die Crontab-Zeilen dann wie folgt belassen werden:

 0 22 * ​​* * root /usr/drainer.sh 0 23 * * 5 root /usr/respaldosemanal.sh 0 8,20 * * * jcarrillo mail -s "System funktioniert" [email protected] 

Die ersten beiden Zeilen werden vom Root-Benutzer ausgeführt, und die erste Zeile führt jeden Abend um 10 Uhr das Skript aus, das eine tägliche Sicherung generiert. Die zweite führt jeden Freitag um 11 Uhr ein Skript aus, das eine wöchentliche Unterstützung generiert. Die dritte Zeile wird vom sergio-Benutzer ausgeführt und wird jeden Tag um 8 Uhr morgens und um 8 Uhr abends ausgeführt. Der Befehl lautet, eine E-Mail mit dem Betreff “system running” an das Konto [email protected] zu senden So wie ein Administrator weiß, dass ein Remote-System zu den angegebenen Zeiten aktiv ist, aber zu diesen Zeiten eine E-Mail erhält, stimmt etwas nicht.

Als root ist es dann möglich, crontab direkt zu modifizieren :

 vim / etc / crontab 

Dies wird direkt geändert.

Ausführen von Cron mit mehreren Benutzern, Befehl crontab

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

 / etc / crontab 

Wenn normale (und sogar Root-) Benutzer ihre eigene crontab-Datei generieren möchten, verwenden wir den Befehl crontab .

Im Verzeichnis / var / spool / cron (kann je nach Distribution variieren) wird für jeden Benutzer eine Cron-Datei erstellt. Diese Datei sollte, auch wenn es sich um Text handelt, nicht direkt bearbeitet werden.

See also  Passwort entfernen WIFI mit iWep PRO (Audit WIFI)

Wir haben dann zwei Situationen, die crontab-Datei mit dem Befehl direkt zu generieren:

 crontab -e 

Dadurch wird der Standardeditor (normalerweise vi) mit der Datei “empty crontab” geöffnet, in der der Benutzer seine Aufgabentabelle eingibt und die automatisch als / var / spool / cron / user gespeichert wird.

Der andere Fall ist, dass der Benutzer eine normale Textdatei mit den Einträgen der Tasks bearbeitet und sie als Beispiel ‘my_cron’ nennt. Dann wird sie mit dem Befehl $> crontab my_cron als Ihre Cron-Datei des Benutzers in / var / spool festgelegt / cron / user:

 Ich habe my_cron gesehen # Dateien mit freigegebenen Ordnern löschen 0 20 * * * rm -f / home / sergio / shared / * # führt ein Skript aus, das den Dokumentenordner am ersten Tag eines jeden Monats sichert 0 22 1 * * /home/sergio/respaldomensual.sh # Alle 5 Stunden von Montag bis Freitag wird sichergestellt, dass die Berechtigungen bei mir zu Hause korrekt sind 1 * 5 * * * 1-5 chmod -R 640 / home / sergio / * : wq (die Datei wird gespeichert) > ls my_cron > crontab my_cron (steht auf / var / spool / cron / user) 

Fassen Sie das Obige zusammen und ziehen Sie andere crontab- Optionen in Betracht:

 crontab archivo.cron (setzt die Datei.cron als crontab des Benutzers) crontab -e (öffnet den voreingestellten Editor, in dem Sie die crontab-Datei erstellen oder bearbeiten können) crontab -l (listet die aktuellen crontab, cron Aufgaben des Benutzers auf) crontab -r (entfernt die aktuelle crontab des Benutzers) 

In einigen Distributionen ist es beim Bearbeiten von Crontabs normaler Benutzer erforderlich, den Dienst neu zu starten, damit die Crontab-Dateien in / var / spool / cron erneut gelesen werden können.

 Neustart des Dienstes 

In diesem Artikel finden Sie weitere Informationen zum Starten / Beenden / Neustarten von Diensten.

Zugriff auf cron kontrollieren

Mit Cron können Sie steuern, welche Benutzer 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 oder besser gesagt den Befehl crontab verwendet, fügen Sie einfach Ihren Benutzernamen zur Datei /etc/cron.deny hinzu, damit er verwendet werden kann. Fügen Sie dann gegebenenfalls Ihren Benutzernamen in /etc/cron.allow hinzu aus irgendeinem grund möchten sie allen benutzern die verwendung von cron verweigern, dann können sie das wort ALL am anfang von cron.deny schreiben und das würde genügen.

 Echo ALL >> / etc / cron.deny oder um einen Benutzer mehr zu cron.allow hinzuzufügen Echo John >> / etc / cron.allow 

Wenn die cron.allow-Datei oder die cron.deny-Datei nicht vorhanden ist, ist die Verwendung von cron theoretisch ohne Benutzereinschränkungen möglich. Wenn Sie Benutzernamen in cron.allow hinzufügen, ohne eine cron.deny-Datei zu erstellen, hat dies den gleichen Effekt wie beim Erstellen mit dem Wort ALL. Sobald cron.allow mit einem einzelnen Benutzer erstellt wurde, müssen Sie in dieser Datei immer die anderen Benutzer angeben, die Sie für cron verwenden möchten.

Schlussfolgerungen
Wir haben über die Funktionsweise von Cron gesprochen. Ich hoffe, es wurde verstanden. Einige Distributionen wie Red Hat enthalten eine Variante wie Anacron, die einige Mängel von Cron aufweisen kann. Trotzdem ist es auf jeder Ebene von der einfachsten bis zur fortgeschrittensten Verwendung von Cron ratsam, die Funktionsweise zu verstehen . Wenn Sie Fragen oder Anregungen haben, zögern Sie nicht, diese in die Kommentare aufzunehmen.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *