{"id":1662,"date":"2023-09-09T15:47:26","date_gmt":"2023-09-09T13:47:26","guid":{"rendered":"https:\/\/linux-bibel.at\/?p=1662"},"modified":"2023-09-09T15:47:28","modified_gmt":"2023-09-09T13:47:28","slug":"aufgaben-mit-cron-unter-linux-automatisieren","status":"publish","type":"post","link":"https:\/\/linux-bibel.at\/index.php\/2023\/09\/09\/aufgaben-mit-cron-unter-linux-automatisieren\/","title":{"rendered":"Aufgaben mit Cron unter Linux automatisieren"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Mit Cron lassen sich unter Linux immer wiederkehrende Aufgaben automatisieren &#8211; also zu einem bestimmten Zeitpunkt automatisch ausf\u00fchren. Dies k\u00f6nnen Befehle sein, oder auch selbst erstellte Scripte, die automatisch starten sollen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nun, in diesem Beitrag der Linux Bibel sehen wir uns diese Software etwas n\u00e4her an. Cron ist unter den meisten Linux-Distributionen automatisch vorinstalliert. Unter Void Linux installieren Sie den Dienst etwa durch das Paket &#8222;<strong>cronie<\/strong>&#8222;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im ersten Teil werden wir uns mit Cron als normaler Benutzer besch\u00e4ftigen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Automatisch zu startende Aufgaben konfigurieren<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wollen wir beispielsweise das Script &#8222;<strong>backup.sh<\/strong>&#8220; jeden Samstag um 22:45 ausf\u00fchren lassen, es liegt im Verzeichnis &#8222;<em>\/home\/robert\/scripts<\/em>&#8222;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um Aufgaben mit normalen Benutzerrechten auszuf\u00fchren, ist die Crontab zust\u00e4ndig &#8211; diese erstellt und bearbeitet man am\u00a0Terminal\u00a0mit dem Befehl:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>crontab -e<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-1024x576.jpg\" alt=\"\" class=\"wp-image-1663\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-1024x576.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-300x169.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-768x432.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-1536x864.jpg 1536w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron.jpg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Unter den meisten Linux-Distributionen wird beim ersten Modifizieren der Crontab abgefragt, welchen Editor Sie nutzen m\u00f6chten &#8211; der einfachste ist Nano, etwas schwieriger ist Vim zu nutzen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nun, in der Crontab legen wir in jeder neuen Zeile eine neue Aufgabe fest &#8211; die Syntax dazu sieht so aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>datum \/ uhrzeit Befehl<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die Syntax ist recht einfach, die echte Zeile sieht zu Beginn etwas kryptisch aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>45 22 * * 7 \/home\/robert\/scripts\/backup.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In der Crontab also:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-1-1024x576.jpg\" alt=\"\" class=\"wp-image-1664\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-1-1024x576.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-1-300x169.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-1-768x432.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-1-1536x864.jpg 1536w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-1.jpg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr eine weitere Aufgabe erstellt man sich eine weiter Zeile. Jetzt wollen wir uns diese kryptische Zeitangabe aber etwas n\u00e4her ansehen &#8222;<strong>45 22 * * 7<\/strong>&#8222;. Es sieht nur kryptisch aus &#8211; ist aber ganz einfach zu verstehen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>*     *     *     *     *  auszuf\u00fchrender Befehl\n-     -     -     -     -\n|     |     |     |     |\n|     |     |     |     +----- Wochentag - an diesem Tag der Woche soll der Befehl ausgef\u00fchrt werden (0 - 7, Sonntag = 0, Montag = 1)\n|     |     |     +------- Monat - in diesem Monat des Jahres soll der Befehl ausgef\u00fchrt werden (1 - 12)\n|     |     +--------- Tag - an diesem Tag im Monat soll der Befehl ausgef\u00fchrt werden (1 - 31)\n|     +----------- Stunde - in dieser Stunde des Tages soll der Befehl ausgef\u00fchrt werden (0 - 23)\n+------------- Minute - in dieser Minute der Stunde soll der Befehl ausgef\u00fchrt werden (0 - 59)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Statt der Sternchen gibt man also die Uhrzeit, den Tag, den Monat und den Wochentag an. Zwischen den einzelnen Angaben l\u00e4sst man ein Leerzeichen. Gibt man statt einer Angabe nicht ein &#8211; ersetzt die Angabe ein Sternchen. Und ein Sternchen bedeutet wiederum &#8211; immer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lasse ich jetzt beispielsweise die Angabe der Stunde, des Tages und des Monats weg &#8211; etwa:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>10 * * * 0 \/home\/robert\/scripts\/backup.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wird das Script in der zehnten Minute jeder Stunde, jedes Monats und jeden Sonntag ausgef\u00fchrt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>10m 0-23uhr 1-31tag 1-12monat 0sonntag<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Oder ich m\u00f6chte das Script t\u00e4glich um 10:15 ausf\u00fchren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>15 10 * * * \/home\/robert\/scripts\/backup.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Anschlie\u00dfend wird die Datei gespeichert und Cron verrichtet ab sofort seine Aufgabe(n).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Arbeitet man mit der Desktop-Umgebung KDE Plasma, hat man es etwas einfacher &#8211; mit Kcron hat man auch eine grafische Oberfl\u00e4che in den Systemeinstellungen. Diese findet sich unter &#8222;<em>Starten und Beenden \u2192 Aufgabenplaner<\/em>&#8222;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-2-1024x576.jpg\" alt=\"\" class=\"wp-image-1665\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-2-1024x576.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-2-300x169.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-2-768x432.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-2-1536x864.jpg 1536w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-2.jpg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Hier zeigt sich auch die gerade am Terminal erstellte Aufgabe &#8211; um eine Aufgabe grafisch zu erstellen, klicken Sie rechts oben auf die Schaltfl\u00e4che &#8222;<strong>Neuer Auftrag<\/strong>&#8222;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-3-1024x576.jpg\" alt=\"\" class=\"wp-image-1666\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-3-1024x576.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-3-300x169.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-3-768x432.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-3-1536x864.jpg 1536w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-3.jpg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ganz oben geben Sie den Befehl ein oder w\u00e4hlen das Script &#8211; unten markieren Sie die Zeiten, zu denen Cron die jeweilige Aufgabe ausf\u00fchren soll:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-4-1024x576.jpg\" alt=\"\" class=\"wp-image-1667\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-4-1024x576.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-4-300x169.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-4-768x432.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-4-1536x864.jpg 1536w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/09\/cron-4.jpg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Systemweite Cron-Jobs, am ehesten f\u00fcr administrative Aufgaben gedacht:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nehmen wir wieder das Beispiel des Backup-Scripts &#8211; in diesem Fall soll es halt nicht einfach nur die Dateien des einzelnen Benutzers sichern, sondern alle Home-Verzeichnisse, oder auch das komplette System. In diesem Fall m\u00fcsste das Script nat\u00fcrlich mit administrativen Rechten laufen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um dies zum Laufen zu bringen, gilt es, die Crontab nat\u00fcrlich als\u00a0root\u00a0zu starten &#8211; die Crontab liegt dann unter &#8222;<em>\/etc\/crontab<\/em>&#8222;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>crontab -e<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dasselbe Beispiel &#8211; gleicht sieht man einen weiteren Eintrag mehr:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>45 22 * * 7 root \/home\/robert\/scripts\/backup.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der einzige Unterschied ist &#8211; es wird der Benutzer genannt, mit dessen Rechten der Befehl ausgef\u00fchrt wird. Ich k\u00f6nnte jetzt beispielsweise auch als Administrator ein Script mit den Rechten des jeweiligen Benutzers ausf\u00fchren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>45 22 * * 7 root \/home\/robert\/scripts\/backup.sh\n45 22 * * 7 robert \/home\/robert\/scripts\/backup-robert.sh<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Eine weitere M\u00f6glichkeit, Aufgaben mit Cron automatisch auszuf\u00fchren, sind Scripte unter:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\/etc\/cron.daily<\/strong>&nbsp;&#8211; darin liegende Scripte werden t\u00e4glich ausgef\u00fchrt<\/li>\n\n\n\n<li><strong>\/etc\/cron.hourly<\/strong>&nbsp;&#8211; diese Scripte werden einmal st\u00fcndlich gestartet<\/li>\n\n\n\n<li><strong><\/strong><ul><li><strong>\/etc\/cron.monhtly<\/strong><\/li><\/ul>&#8211; diese Scripte werden einmal im Monat gestartet<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Scripte sind so einfach aufgebaut wie normale Scripte unter Linux &#8211; also etwa:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/sh\n...\n...\n...\ndone\nexit<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nat\u00fcrlich nicht vergessen &#8211; alle Scripte ausf\u00fchrbar machen.<\/p>\n<div class=\"pld-like-dislike-wrap pld-custom\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"Gef\u00e4llt mir\" data-post-id=\"1662\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                            <img src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/Daumen-Hoch.png\" alt=\"Gef\u00e4llt mir\" \/>\r\n            <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">1    <\/span>\r\n<\/div><div class=\"pld-dislike-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-dislike-trigger pld-like-dislike-trigger  \" title=\"Gef\u00e4llt mir nicht\" data-post-id=\"1662\" data-trigger-type=\"dislike\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                            <img src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/Daumen-Runter.png\" alt=\"Gef\u00e4llt mir nicht\" \/>\r\n            <\/a>\r\n    <span class=\"pld-dislike-count-wrap pld-count-wrap\">1<\/span>\r\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Mit Cron lassen sich unter Linux immer wiederkehrende Aufgaben automatisieren &#8211; also zu einem bestimmten Zeitpunkt automatisch ausf\u00fchren. Dies k\u00f6nnen Befehle sein, oder auch selbst erstellte Scripte, die automatisch starten sollen. Nun, in diesem Beitrag der Linux Bibel sehen wir uns diese Software etwas n\u00e4her an. Cron ist unter den meisten Linux-Distributionen automatisch vorinstalliert. Unter [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1667,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[15],"class_list":["post-1662","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-system","tag-system"],"_links":{"self":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/1662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/comments?post=1662"}],"version-history":[{"count":1,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/1662\/revisions"}],"predecessor-version":[{"id":1668,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/1662\/revisions\/1668"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/media\/1667"}],"wp:attachment":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/media?parent=1662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/categories?post=1662"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/tags?post=1662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}