Der Crontab-Befehl verwaltet die Cron-Tabelle, die vom Cron-Daemon verwendet wird, um die Cron-Jobs auszuführen. Dieser Artikel erklärt die verschiedenen Befehlszeilenoptionen des crontab-Befehls.
1. Anpassung der Crontab anderer Benutzer mit Option -u
-u steht für Benutzer. Darauf sollte ein gültiger Benutzername im System folgen. Die Option -u allein macht nichts. Es sollte mit anderen Optionen kombiniert werden. Tatsächlich kann es mit allen anderen crontab-Befehlszeilenoptionen kombiniert werden.
Wenn Sie -u Benutzername nicht angeben, werden Crontab-Befehle für den aktuellen Benutzer ausgeführt. Beispielsweise werden alle folgenden crontab-Befehle für den aktuell angemeldeten Benutzer ausgeführt.
crontab -l crontab -e crontab -r ..
Wenn Sie -u Benutzername angeben, wird der crontab-Befehl für den angegebenen Benutzernamen ausgeführt. Beispielsweise werden alle folgenden crontab-Befehle auf dem Oracle-Benutzer ausgeführt.
crontab -u oracle -l crontab -u oracle -e crontab -u oracle -r ..
2. Cron-Tabelle mit Option -l
anzeigen-l steht für Liste. Dies zeigt die Crontab des aktuellen Benutzers an. Da ich als Root angemeldet bin, werden die Cron-Jobs des Root-Benutzers angezeigt.
# crontab -l 53 00 * * 7 /bin/sh /home/root/bin/server-backup
Um die Cronjobs anderer Benutzer anzuzeigen, kombinieren Sie -l mit der Option -u.
# crontab -u oracle -l 01 00 * * * /bin/sh /home/oracle/bin/rman-backup
Die 15 crontab-Beispiele erläutern die praktische Verwendung der Cronjob-Einträge.
3. Bearbeiten Sie die Cron-Tabelle mit Option -e
-e steht für Bearbeiten. Auf diese Weise können Sie die Crontab des aktuellen Benutzers bearbeiten. Da ich als Root angemeldet bin, werden die Cron-Jobs von Root automatisch in einem Vim-Editor geöffnet und ich kann sie bearbeiten.
# crontab -e 53 00 * * 7 /bin/sh /home/root/bin/server-backup ~ ~ /tmp/crontab.7dgqju
Wie Sie oben sehen, ist /tmp/crontab.7dgqju eine temporäre Datei, die automatisch von crontab erstellt wird und in der Sie Ihre Cron-Jobs bearbeiten können.
Wenn Sie Ihre Änderungen speichern und den Vim-Editor verlassen, wird eine der folgenden Meldungen angezeigt, je nachdem, ob Sie Änderungen vorgenommen haben oder nicht.
# crontab -e crontab: no changes made to crontab # crontab -e crontab: installing new crontab
Hinweis:Der Editor, den crontab verwendet, um die Cron-Jobs zur Bearbeitung zu öffnen, hängt von der Umgebungsvariable VISUAL oder EDITOR ab. Standardmäßig wird der Vim-Editor in der Linux-Umgebung verwendet. Aber Sie können es mit der Umgebungsvariable VISUAL/EDITOR ändern.
Um die Cronjobs anderer Benutzer zu bearbeiten, kombinieren Sie -e mit der Option -u.
# crontab -u oracle -e crontab: installing new crontab
Um die Bedeutung der crontab-Einträge selbst zu verstehen, lesen Sie Wie man einen Cron-Job alle 5 Minuten (oder Stunden, oder Tage oder Monate) ausführt.
4. Crontab aus einer Datei laden
Anstatt die Crontab manuell zu bearbeiten, um neue Jobs hinzuzufügen, können Sie auch alle Cron-Jobs aus einer Datei hochladen. Dies ist hilfreich, wenn Sie viele Server mit denselben Cron-Job-Einträgen warten müssen.
Im folgenden Beispiel befinden sich alle Cronjobs in der Datei /home/root/mycronjobs.txt.
# cat /home/root/mycronjobs.txt 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota
Gehen Sie wie folgt vor, um die mycronjobs.txt-Jobs in die Crontab des aktuellen Benutzers hochzuladen:
# crontab /home/root/mycronjobs.txt
Überprüfen Sie, ob die Cron-Jobs erfolgreich hochgeladen wurden.
# crontab -l 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota
Hinweis:Seien Sie vorsichtig, wenn Sie diese Upload-Methode verwenden, da dadurch alle aktuellen Cronjob-Einträge gelöscht werden, bevor die neuen hochgeladen werden.
Um den Cron-Job von einer Datei zu einem anderen Benutzer hochzuladen, kombinieren Sie ihn mit der Option -u.
# crontab -u oracle /home/oracle/mycronjobs.txt
5. Fügen Sie SELinux Security mit Option -s
hinzu-s steht für SELinux. Dadurch wird die Variable MLS_LEVEL zur Crontab hinzugefügt, die den aktuellen SELinux-Sicherheitskontext enthält.
Um die Option -s zu verwenden, sollten Sie die Cronjobs aus einer Datei hochladen.
# cat /home/root/mycronjobs.txt 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota # crontab -s /home/root/mycronjobs/my.txt SELINUX_ROLE_TYPE=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota
Abhängig von Ihrem System wird oben entweder die Variable SELUNUX_ROLE_TYPE oder die Variable MLS_LEVEL hinzugefügt, die die SELinux-Sicherheitskontextzeichenfolge enthält. Wenn Sie SELinux nicht in Ihrer Umgebung verwenden, machen Sie sich keine Gedanken darüber, was diese Option bewirkt. SELinux ist ein separates Diskussionsthema, das wir in zukünftigen Artikeln ausführlich behandeln werden.
6. Löschen Sie alle Cron-Jobs mit Option -r
-r steht für entfernen. Dadurch werden alle Cron-Job-Einträge des aktuellen Benutzers entfernt, wie unten gezeigt.
# crontab -l 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota # crontab -r # crontab -l no crontab for root
-i steht für interaktiven Modus. Wenn Sie -i mit -r kombinieren, werden Sie um eine Bestätigung gebeten, bevor alle Crontab-Einträge entfernt werden.
# crontab -ir crontab: really delete root's crontab? n
Um die Cronjobs anderer Benutzer zu entfernen, kombinieren Sie -r mit der Option -u.
# crontab -u oracle -l 01 00 * * * /bin/sh /home/oracle/bin/rman-backup # crontab -u oracle -r # crontab -u oracle -l no crontab for oracle