Auf Computern ist es wichtig, dass Dinge nach einem regelmäßigen und vorhersehbaren Zeitplan geschehen. Es ist wichtig, weil wir Menschen manchmal schlecht darin sind, uns daran zu erinnern, Dinge zuverlässig zu erledigen, weil wir abgelenkt sind, zu viel im Kopf haben oder im Urlaub sind. Computer sind wirklich gut darin, Dinge nach einem Zeitplan zu erledigen, aber ein Mensch muss den Computer programmieren, bevor der Computer aktiv wird.
In gewisser Weise der cron
system ist eine einfache und rudimentäre Einführung in die Programmierung. Sie können Ihren Computer dazu bringen, das zu tun, was Sie wollen, indem Sie einfach eine Datei bearbeiten. Sie müssen nicht einmal wissen, wo die Datei aufbewahrt wird. Sie müssen nur einen einfachen Befehl eingeben, das "Rezept" eingeben, dem Ihr Computer folgen soll, und Ihre Arbeit speichern. Von da an führt Ihr Computer Ihre Anweisungen zur angegebenen Zeit aus, bis er aufgefordert wird, anzuhalten.
Per Design cron
ist kein komplexes System. Hier ist, was Sie darüber wissen müssen.
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Was ist Cron?
Der cron
Befehl ist in Linux und Unix so allgegenwärtig und wurde so oft nachgeahmt und neu erfunden, dass er fast ein Oberbegriff für etwas ist, das nach einem Zeitplan passiert . Es ist eine Form der Automatisierung, und obwohl es verschiedene Implementierungen davon gibt (Dillons Cron, Vixies Cron, Chrony und andere) und Variationen wie anacron
und systemd-Timer sind die Syntax und der Arbeitsablauf seit Jahrzehnten im Wesentlichen gleich geblieben.
Cron arbeitet auf einem "Spool"-System, ähnlich wie Drucker und E-Mail. Wenn Sie nicht wussten, dass Drucker und E-Mail einen Spool verwenden, ist das in Ordnung, denn der Sinn einer Spool-Datei ist, dass Sie nicht viel darüber nachdenken sollten. Auf einem Linux-System das Verzeichnis /var/spool
ist als zentraler Knotenpunkt für wichtige, aber untergeordnete Dateien konzipiert, mit denen der Benutzer nicht direkt interagieren soll. Eine der in /var/spool
verwalteten Spulen ist cron
Tabellen oder kurz "crontab". Jeder Benutzer – Sie selbst eingeschlossen – auf einem Linux-System hat eine crontab. Benutzer können ihre eigene Crontab bearbeiten, anzeigen und entfernen. Darüber hinaus können Benutzer ihre Crontab verwenden, um Aufgaben zu planen. Der cron
Das System selbst überwacht Crontabs und stellt sicher, dass jeder in einer Crontab aufgeführte Job zur angegebenen Zeit ausgeführt wird.
Cron-Einstellungen bearbeiten
Sie können Ihre Crontab mit crontab
bearbeiten Befehl zusammen mit dem -e
(für bearbeiten ) Möglichkeit. Standardmäßig rufen die meisten Systeme vim
auf Texteditor. Wenn Sie wie ich Vim nicht verwenden, können Sie in Ihrer ~/.bashrc
einen anderen Editor für sich selbst festlegen Datei. Ich habe meinen auf Emacs eingestellt, aber Sie können es auch mit Nano, Kate oder was auch immer Ihr Lieblingseditor ist versuchen. Der EDITOR Die Umgebungsvariable definiert, welchen Texteditor Sie in Ihrem Terminal verwenden, während die VISUAL Die Variable definiert, welchen Editor Sie im grafischen Modus verwenden:
export EDITOR=nano
export VISUAL=kate
Aktualisieren Sie Ihre Shell-Sitzung mit Ihren neuen Einstellungen:
$ source ~/.bashrc
Jetzt können Sie Ihre Crontab mit Ihrem bevorzugten Editor bearbeiten:
$ crontab -e
Planen Sie eine Aufgabe
Der cron
System ist im Wesentlichen ein Kalendersystem. Sie können cron
mitteilen wie oft ein Job ausgeführt werden soll, indem Sie fünf verschiedene Attribute verwenden:Minute, Stunde, Datum, Monat, Wochentag. Die Reihenfolge dieser Attribute ist streng und nicht unbedingt intuitiv, aber Sie können sie sich als Filter oder Masken vorstellen. Standardmäßig denken Sie vielleicht, dass alles auf immer eingestellt ist oder alle . Dieser Eintrag würde touch /tmp/hello
ausführen ganzjährig zu jeder Minute zu jeder Stunde an jedem Tag:
* * * * * touch /tmp/hello
Sie können diesen allumfassenden Zeitplan einschränken, indem Sie für jedes Attribut spezifische Definitionen festlegen. Damit der Job zur halben Stunde jeder vollen Stunde ausgeführt wird, stellen Sie die Minuten auf 30 ein :
30 * * * * touch /tmp/hello
Sie können diese Anweisung weiter auf eine bestimmte Stunde einschränken. Dieser Job wird jeden Morgen um 3:30 Uhr ausgeführt:
30 3 * * * touch /tmp/hello
Sie können den Job auch nur am Ersten jedes Monats ausführen lassen:
30 3 1 * * touch /tmp/hello
Sie können einen Monat mit 1 für Januar bis 12 für Dezember einstellen, und Sie können einen Tag mit 0 für Sonntag bis 6 für Samstag einstellen. Dieser Job wird im April um 3:15 Uhr nur montags ausgeführt:
15 3 * 4 1 touch /tmp/hello
Inkremente festlegen
Alle diese Einstellungen stimmen genau mit einem Wert überein . Sie können auch cron
verwenden Notation, um Jobs nach einer festgelegten Zeit auszuführen. Sie können beispielsweise alle 15 Minuten einen Job ausführen:
*/15 * * * * touch /tmp/hello
Sie könnten alle drei Tage um 10:00 Uhr einen Job ausführen:
* 10 */3 * * touch /tmp/hello
Sie könnten alle sechs Stunden einen Job ausführen:
* */6 * * * touch /tmp/hello
Cron-Kurzschrift
Modernes cron
Implementierungen haben eine praktische Abkürzung für allgemeine Zeitpläne hinzugefügt. Diese sind:
@hourly
@daily
@weekly
@monthly
@yearly or @annually
Cronjobs auflisten
Verwenden der crontab
Befehl, können Sie eine Liste Ihrer geplanten cron
sehen Jobs:
$ crontab -l
15 3 * 4 1 touch /tmp/hello
Ein Crontab entfernen
Wenn Sie mit einem Crontab fertig sind, können Sie es mit -r
entfernen Möglichkeit:
$ crontab -r -i
Das -i
Option steht für interaktiv . Es fordert Sie zur Bestätigung auf, bevor die Datei gelöscht wird.
Was Cron kann
Es ist eine Sache zu wissen, wie man cron
, aber es ist eine andere Sache zu wissen, wofür man es verwendet. Der klassische Anwendungsfall ist ein guter Backup-Plan. Wenn Ihr Computer die meiste Zeit des Tages oder den ganzen Tag und die ganze Nacht eingeschaltet ist, können Sie eine routinemäßige Sicherung einer wichtigen Partition planen. Ich führe eine Sicherungsanwendung namens rdiff-backup
aus auf meiner primären Datenpartition täglich um 3:00 Uhr:
$ crontab -l | grep rdiff
* 3 * * * rdiff-backup /data/ /vault/
Eine weitere häufige Verwendung ist die Systemwartung. Auf meinem Slackware-Desktop aktualisiere ich jeden Freitagnachmittag meinen lokalen Repository-Katalog:
$ crontab -l | grep slack
* 14 * * 5 sudo slackpkg update
Ich könnte auch alle drei Tage um 15:00 Uhr ein Ansible-Skript ausführen, um meinen Downloads-Ordner aufzuräumen:
$ crontab -l | grep ansible
* 15 */3 * * ansible-playbook /home/seth/Ansible/cleanup.yaml
Eine kleine Investition in die Gesundheit Ihrer Computerumgebung kann viel bewirken. Es gibt Deduplizierungsskripte, Dateigröße und /tmp
Verzeichnismonitore, Größenanpassung von Fotos, Dateiverschiebungen und viele weitere einfache Aufgaben, die Sie im Hintergrund ausführen können, um Ihr System übersichtlich zu halten. Mit cron
, kann Ihr Computer auf eine Art und Weise auf sich selbst aufpassen, wie ich es mir nur in meiner physischen Wohnung wünsche.
Cron-Einstellungen merken
Abgesehen davon, sich das Warum auszudenken Sie brauchen cron
, das Schwierigste an cron
meiner Erfahrung nach hat sich an seine Syntax erinnert. Wiederholen Sie dies immer wieder für sich selbst, bis Sie es sich eingeprägt haben:
Minuten, Stunden, Datum, Monat, Wochentag.
Minuten, Stunden, Datum, Monat, Wochentag.
Minuten, Stunden, Datum, Monat, Wochentag.
Besser noch, laden Sie unseren kostenlosen Cheatsheet herunter, damit Sie den Schlüssel immer zur Hand haben, wenn Sie ihn am dringendsten brauchen!