NoPaste

Crontab

von KP97

SNIPPET_TEXT:
  1. Aufbau der Crontab
  2.  
  3.  
  4. Wenn man ein Script jeden Tag ausführen will, kopiert man es einfach in den Ordner /etc/cron.daily, für einmal pro Woche in /etc/cron.weekly und einmal pro Monat in /etc/cron.monthly und das war's bereits.
  5. (Auf die Rechte achten 'chmod 700 script.sh' )
  6.  
  7. Wem das nicht genügt, hat zwei verschiedene Möglichkeiten, Cronjobs einzutragen. Einerseits in die Datei /etc/crontab, die aber nur vom User root geändert werden kann, oder mit dem Befehl 'crontab -e'. Zuerst die Möglichkeit über die Datei /etc/crontab.
  8.  
  9. Code:
  10. Minute | Stunde | Tag des Monats | Monat | Tag der Woche | User | Befehl
  11.  
  12. Die möglichen Werte aufgelistet:
  13. Minute: 0-59
  14. Stunde: 0-23
  15. Tag des Monats: 1-31
  16. Monat: 1-12
  17. Tag der Woche: Nützlich, wenn z.B. immer Dienstags ein Script gestartet werden soll. Möglich ist 0-7, wobei 0 und 7 jeweils der Sonntag ist.
  18. User: Der Benutzername unter dem das Script ausgeführt werden soll. Bspw root
  19. Befehl: Konsolen-Befehl oder Scriptname der ausgeführt wird.
  20.  
  21. Code:
  22. 0 15 * * *   root    /root/scripts/backup.sh
  23.  
  24. Das Script /root/scripts/backup.sh würde nun jeden Tag um 15 Uhr ausgeführt.
  25. Wie man hier sieht, werden die Werte die egal sind, mit einem Stern (*) gekennzeichnet. In diesem Fall ist es egal was für ein Tag ist, in welchem Monat wir uns befinden und auch, ob wir Dienstag oder Donnerstag haben.
  26.  
  27. Über den Befehl crontab -e funktioniert das ganz ähnlich, es fällt nur die Spalte User weg, da das Script unter dem Benutzer laufen wird, der den Cronjob eingerichtet hat.
  28.  
  29. Beispiel:
  30.  
  31. Code:
  32. 0 15 * * *   /root/scripts/backup.sh
  33.  
  34. Nun hat man aber noch einige weitere Möglichkeiten die Werte anzugeben:
  35.  
  36. Listen:
  37. Mit Komma getrennte Werte (ohne Abstand dazwischen) Bspw: 8,12 um ein Script um 8 und 12 Uhr auszuführen.
  38. Zahlenfolgen:
  39. Mit - getrennte Werte Bspw. 8-12 um das Script um 8,9,10,11 und 12 Uhr auszuführen.
  40. Stufen: */Stufe, Wird genutzt um z.B.: "alle fünf Minuten" oder "jeden 2. Tag" zu erstellen. Bspw: */2 um das Script alle zwei Stunden auszuführen.
  41.  
  42.  
  43.  
  44.  
  45. Besondere Aufrufe
  46.  
  47.  
  48. Für besondere Ereignisse kann man anstatt der 5 Zeitdaten eines der Folgenden einsetzen:
  49.  
  50. @reboot Ausführen beim Systemstart
  51. @yearly Einmal pro Jahr
  52. @monthly Einmal pro Monat
  53. @weekly Einmal pro Woche
  54. @daily Einmal am Tag
  55. @hourly Einmal pro Stunde
  56.  
  57. Beispiel:
  58.  
  59. Code:
  60. @reboot      root      /root/scripts/backup.sh
  61.  
  62. Führt das Script beim Systemstart unter dem User root aus.
  63.  
  64. Output und Fehlermeldungen
  65.  
  66. Schreibt man in die /etc/crontab eine Zeile wie
  67.  
  68. Code:
  69. MAILTO=root
  70.  
  71. wird die gesamte Ausgabe der Scripts per Mail an den User root gesendet.
  72. Wenn man dies bei keinem seiner Scripte will, löscht man einfach die Zeile mit dem MAILTO= aus /etc/crontab.
  73.  
  74. Will man nur bei bestimmten Scripts keine Meldung, fügt man
  75. > /dev/null an den Aufruf an. Damit werden die Meldungen, die vom Script gesendet werden, ins Nichts geleitet.
  76.  
  77. Beispiel:
  78.  
  79. Code:
  80. 0 15 * * *   root    /root/scripts/backup.sh > /dev/null
  81. Nun erhält man aber noch allfällige Fehlermeldungen per Mail. Will man auch diese nicht, muss noch 2>&1 angefügt werden, damit werden Fehler dorthin geleitet wo auch die normale Ausgabe hinkommt, und das ist wieder ins Nichts...
  82.  
  83. Beispiel:
  84. Code:
  85. 0 15 * * *   root    /root/scripts/backup.sh > /dev/null 2>&1
  86.  
  87.  
  88.  
  89.  
  90.  
  91. Einige Beispiele um das Ganze noch etwas verständlicher zu machen:
  92.  
  93.  
  94. Code:
  95. * * * * *   root   /root/scripts/backup.sh
  96.  
  97. Script wird jede Minute ausgeführt.
  98. Code:
  99.  
  100. */1 * * * *   root   /root/scripts/backup.sh
  101. Bewirkt das gleiche wie der Aufruf oben.
  102.  
  103. Code:
  104. 10 * * * *      root   /root/scripts/backup.sh
  105.  
  106. Script wird jede Stunde um 10 nach ausgeführt, 14:10, 15:10 etc.
  107.  
  108. Code:
  109. 0 10,12 * * *   root   /root/scripts/backup.sh
  110.  
  111. Script wird jeden Tag um 10.00 und 12.00 Uhr ausgeführt.
  112.  
  113. Code:
  114. 0 0 2-4 * *   root   /root/scripts/backup.sh
  115.  
  116. Script wird am 2., 3. und 4. jeden Monats um 0.00 Uhr ausgeführt.
  117.  
  118. Code:
  119. 40,50 13 */2  4-8 *   root   /root/scripts/backup.sh > /dev/null 2>&1
  120.  
  121. Script wird vom April bis August jeden zweiten Tag um 13.40 und 13.50 ausgeführt, wobei die Ausgabe wie auch die Fehlermeldungen nicht verschickt werden.
  122.  
  123. Code:
  124. */2 * * * *   root   /root/scripts/backup.sh > /dev/null
  125.  
  126. Script wird alle 2 Minuten aufgerufen wobei der Output des Scripts nicht verschickt wird.
  127.  
  128. Code:
  129. 0 10 * * 1   root   /root/scripts/backup.sh
  130. Script wird jeden Montag um 10.00 Uhr ausgeführt.
  131.  
  132.  

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN