Cron ist ein zeitbasierter Job-Scheduler, der so konfiguriert ist, dass er Befehle zu bestimmten Zeiten oder Intervallen ausführt. Jeder Benutzer hat eine Cron-Tabelle, die definiert, was in welchem Intervall ausgeführt werden soll. crontab Der Befehl wird zum Erstellen, Ändern und Anzeigen von Cron-Jobs verwendet.
Konfigurationsdateien und Verzeichnisse
– Cron wird von einer Reihe von Dateien namens crontabs gesteuert.
– Die Master-Datei befindet sich in /etc/crontab , zusammen mit Crontab-Dateien für die Benutzer in /var/spool/cron/ . In letzterem Verzeichnis erhalten die Dateien den gleichen Namen wie der Benutzername eines Benutzers.
– Die Datei /etc/crontab führt in regelmäßigen Abständen automatisch Elemente in mehreren Unterverzeichnissen aus. Die Skripte werden in verschiedenen Verzeichnissen abgelegt – /etc/cron.* werden gemäß dem unten angegebenen Zeitintervall ausgeführt. Alle Skripte in diesen Verzeichnissen werden mit Root-Rechten ausgeführt.
Verzeichnis | Zeit |
---|---|
/etc/cron.hourly | Erste Minute jeder Stunde |
/etc/cron.daily | Jeden Tag zwischen 3:05 Uhr und 22:55 Uhr |
/etc/cron.weekly | Zwischen 3:25 Uhr und 23:10 Uhr nach 7 Tagen seit der letzten Hinrichtung |
/etc/cron.monthly | Zwischen 3:45 Uhr und 23:30 Uhr nach einem Monat seit der letzten Hinrichtung |
– Alles, was der Systemadministrator tun muss, ist, ein Shell-Skript oder einen Link zu einer ausführbaren Datei in einem der Verzeichnisse zu platzieren, und es wird automatisch zum richtigen Zeitpunkt ausgeführt.
crontab-Syntax
Das Einrichten einer Crontab auf Benutzerebene ist etwas anders. Die Dateien in /var/spool/cron werden nicht direkt bearbeitet. Stattdessen wird ein Programm namens crontab verwendet, um sie zu manipulieren. Die Syntax des crontab-Befehls lautet:
Usage: crontab [options] file crontab [options] crontab -n [hostname] Options: -u [user] define user -e edit user's crontab -l list user's crontab -r delete user's crontab -i prompt before deleting -n [host] set host in cluster to run users' crontabs -c get host in cluster to run users' crontabs -s selinux context -x [mask] enable debugging
Wie man eine Crontab bearbeitet
Crontab bearbeiten Sie am besten mit dem Befehl crontab -e . Eine andere Möglichkeit, dies zu tun, ist:
1. su to the user whose cron you want to change 2. crontab -l > file [ copy the crontab to a file ]. 3. vi file [ make changes to the file as per your need ] 4. crontab file [ this makes the "file" as new crontab ]
Danach muss der Cron-Daemon nicht neu gestartet werden.
Interpretation der Zeit- und Datumsfelder
Jeder Cron-Befehl hat 5 Zeit- und Datumsfelder, gefolgt von einem Benutzernamen [optional], und wenn dies die System-Crontab-Datei ist, folgt darauf ein Befehl. Befehle werden ausgeführt, wenn die in den Zeit-/Datumsfeldern angegebene Zeit mit der aktuellen Zeit übereinstimmt.
field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 0-31 month 0-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names)
Ein Feld kann ein Sternchen (*) sein, das immer für erster bis letzter steht . Wenn es also im Monatsfeld verwendet wird, bedeutet es jeden Monat von 0 (Januar) bis 12 (Dez).
Beispiel-Cron-Job:
# Example of job definition: .---------------- minute (0 - 59) | .------------- hour (0 - 23) | | .---------- day of month (1 - 31) | | | .------- month (1 - 12) OR jan,feb,mar,apr ... | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat | | | | | 0 1 * * * [user-name] [command to be executed]
Beispiele für das Setzen von Cronjobs
Nachfolgend finden Sie einige Beispiele für die Verwendung von crontab, um zu verstehen, wie eine Aufgabe geplant wird:
Beispiel: jeden Tag fünf Minuten nach Mitternacht einen Job ausführen :
5 0 * * * /home/oracle/scan_asm_devices.sh
Beispiel: Ausführen eines Jobs um 17:30 Uhr am 1. eines jeden Monats :
30 17 1 * * mail -s "It's 5:30pm"
Beispiel: Jeden Montag um 4:05 einen Job ausführen.
5 4 * * mon echo "run at 5 after 4 every monday"
Benutzerzugriffskontrolle
– Um Benutzern den Zugriff auf die Crontabs zu ermöglichen, können die Dateien /etc/cron.allow und /etc/cron.deny verwendet werden, um den Zugriff zuzulassen oder zu verweigern. Geben Sie einfach einen Benutzernamen in eine der beiden Dateien ein, um den Zugriff auf die Crontab zuzulassen oder zu verweigern.
– Wenn die Datei /etc/cron.allow existiert, wird die Datei /etc/cron.deny nicht verwendet.
– In der Standardinstallation existiert nur eine leere Datei /etc/cron.deny.
– Wenn keine der Dateien existiert, erhält nur der Root-Benutzer Zugriff, um einen Job über cron zu planen.