it-swarm.com.de

Warum funktioniert mein Crontab nicht und wie kann ich Fehler beheben?

Dies ist eine kanonische Frage über die Verwendung von cron & crontab.

Sie wurden hierher geleitet, weil die Community ziemlich sicher ist, dass die Antwort auf Ihre Frage unten zu finden ist. Wenn Ihre Frage unten nicht beantwortet wird, können Sie anhand der Antworten Informationen sammeln, die der Community helfen. Diese Informationen sollten in Ihre ursprüngliche Frage umgewandelt werden.

Die Antwort für ' Warum funktioniert mein Crontab nicht und wie kann ich Fehler beheben? ' ist unten zu sehen. Dies adressiert das cron System mit der hervorgehobenen crontab.

246
Eric Leschinski

So beheben Sie alle Probleme/Probleme im Zusammenhang mit Crontab (Linux)


Dies ist ein Community-Wiki Wenn Sie bei dieser Antwort etwas Falsches bemerken oder zusätzliche Informationen haben, bearbeiten Sie es bitte.


Erstens grundlegende Terminologie:

  • cron (8) ist der Dämon, der geplante Befehle ausführt.
  • crontab (1) ist das Programm zum Ändern von Benutzer-crontab (5) -Dateien.
  • crontab (5) ist eine Datei pro Benutzer, die Anweisungen für cron (8) enthält.

Als nächstes Bildung über Cron:

Jeder Benutzer auf einem System kann seine eigene Crontab-Datei haben. Der Speicherort der Root- und Benutzer-Crontab-Dateien ist systemabhängig, liegt jedoch im Allgemeinen unter /var/spool/cron.

Es gibt eine systemweite /etc/crontab - Datei. Das Verzeichnis /etc/cron.d Kann Crontab-Fragmente enthalten, die auch von Cron gelesen und bearbeitet werden. Einige Linux-Distributionen (z. B. Red Hat) haben auch /etc/cron.{hourly,daily,weekly,monthly}, Verzeichnisse, Skripte, die jede Stunde/Tag/Woche/Monat mit Root-Rechten ausgeführt werden.

root kann immer den Befehl crontab verwenden. regulären Benutzern kann der Zugriff gewährt werden oder nicht. Wenn Sie die Crontab-Datei mit dem Befehl crontab -e Bearbeiten und speichern, überprüft crond sie auf ihre grundlegende Gültigkeit, garantiert jedoch nicht, dass Ihre Crontab-Datei korrekt erstellt wurde. Es gibt eine Datei namens cron.deny, Die angibt, welche Benutzer cron nicht verwenden können. Der Speicherort der Datei cron.deny Ist systemabhängig und kann gelöscht werden, sodass alle Benutzer cron verwenden können.

Wenn der Computer nicht eingeschaltet ist oder der crond-Daemon nicht ausgeführt wird und Datum und Uhrzeit für die Ausführung eines Befehls abgelaufen sind, holt crond keine Abfragen ein und führt sie nicht aus.

crontab Angaben, wie man einen Befehl formuliert:

Ein crontab-Befehl wird durch eine einzelne Zeile dargestellt. Sie können \ Nicht verwenden, um einen Befehl über mehrere Zeilen zu erweitern. Das Hash-Zeichen (#) Stellt einen Kommentar dar, was bedeutet, dass alles in dieser Zeile von cron ignoriert wird. Führende Leerzeichen und Leerzeilen werden ignoriert.

Seien Sie SEHR vorsichtig, wenn Sie das Prozentzeichen (%) In Ihrem Befehl verwenden. Sofern sie nicht maskiert werden \%, Werden sie in Zeilenumbrüche konvertiert und alles nach dem ersten nicht maskierten % Wird an Ihren Befehl auf stdin übergeben.

Es gibt zwei Formate für Crontab-Dateien:

  • Benutzer crontabs

    # 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)
    # |  |  |  |  |
    # *  *  *  *  *   command to be executed
    
  • Systemweite Fragmente /etc/crontab Und /etc/cron.d

    # 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)
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    

Beachten Sie, dass für letzteres ein Benutzername erforderlich ist. Der Befehl wird als benannter Benutzer ausgeführt.

Die ersten 5 Felder der Zeile geben die Zeit (en) an, zu denen der Befehl ausgeführt werden soll. Sie können Zahlen oder gegebenenfalls Tages-/Monatsnamen in der Zeitangabe verwenden.

  • Die Felder sind durch Leerzeichen oder Tabulatoren getrennt.
  • Ein Komma (,) Wird verwendet, um eine Liste anzugeben, z. B. 1,4,6,8, was bedeutet, dass bei 1,4,6,8 ausgeführt wird.
  • Bereiche werden mit einem Bindestrich (-) Angegeben und können mit Listen kombiniert werden, z. 1-3,9-12, dh zwischen 1 und 3, dann zwischen 9 und 12.
  • Das Zeichen / Kann verwendet werden, um einen Schritt einzuführen, z. 2/5 was bedeutet, dass bei 2 und dann alle 5 begonnen wird (2,7,12,17,22 ...). Sie wickeln sich nicht über das Ende hinaus.
  • Ein Sternchen (*) In einem Feld kennzeichnet den gesamten Bereich für dieses Feld (z. B. 0-59 Für das Minutenfeld).
  • Bereiche und Schritte können z.B. */2 Bedeutet, beginnend mit dem Minimum für das relevante Feld, dann alle 2, z. 0 für Minuten (0,2 ... 58), 1 für Monate (1,3 ... 11) usw.

Cron-Befehle debuggen

Schauen Sie sich ihre E-Mails an!

Standardmäßig sendet cron alle Ausgaben des Befehls an den Benutzer, unter dem der Befehl ausgeführt wird. Wenn keine Ausgabe erfolgt, erfolgt keine E-Mail. Wenn cron E-Mails an ein anderes Konto senden soll, können Sie die Umgebungsvariable MAILTO in der crontab-Datei festlegen, z.

[email protected]
1 2 * * * /path/to/your/command

Erfassen Sie die Ausgabe selbst

Sie können stdout und stderr in eine Datei umleiten. Die genaue Syntax für die Erfassung der Ausgabe kann je nach verwendetem Shell-Cron variieren. Hier sind zwei Beispiele, die alle Ausgaben in einer Datei unter /tmp/mycommand.log Speichern:

1 2 * * * /path/to/your/command &>/tmp/mycommand.log
1 2 * * * /path/to/your/command >/tmp/mycommand.log 2>&1

Schauen Sie sich die Protokolle an

Cron protokolliert seine Aktionen über Syslog, das (abhängig von Ihrem Setup) häufig zu /var/log/cron Oder /var/log/syslog Weist.

Bei Bedarf können Sie die Cron-Anweisungen mit z.

grep CRON /var/log/syslog 

Nachdem wir uns nun mit den Grundlagen von cron befasst haben, wo sich die Dateien befinden und wie sie verwendet werden, wollen wir uns einige häufig auftretende Probleme ansehen.

Überprüfen Sie, ob Cron läuft

Wenn cron nicht ausgeführt wird, werden Ihre Befehle nicht geplant ...

ps -ef | grep cron | grep -v grep

sollte dir so etwas bringen

root    1224   1  0 Nov16 ?    00:00:03 cron

oder

root    2018   1  0 Nov14 ?    00:00:06 crond

Wenn nicht, starten Sie es neu

/sbin/service cron start

oder

/sbin/service crond start

Es kann andere Methoden geben; Verwenden Sie, was Ihre Distribution bietet.

cron führt Ihren Befehl in einer eingeschränkten Umgebung aus.

Welche Umgebungsvariablen verfügbar sind, ist wahrscheinlich sehr begrenzt. In der Regel werden nur wenige Variablen definiert, z. B. $LOGNAME, $HOME Und $PATH.

Besonders hervorzuheben ist, dass PATH auf /bin:/usr/bin Beschränkt ist. Die überwiegende Mehrheit der Probleme mit "Mein Cron-Skript funktioniert nicht" wird durch diesen restriktiven Pfad verursacht . Wenn sich Ihr Befehl an einem anderen Ort befindet, können Sie dies auf verschiedene Arten lösen:

  1. Geben Sie den vollständigen Pfad zu Ihrem Befehl an.

    1 2 * * * /path/to/your/command
    
  2. Geben Sie einen geeigneten Pfad in der Crontab-Datei an

    PATH=/bin:/usr/bin:/path/to/something/else
    1 2 * * * command 
    

Wenn Ihr Befehl andere Umgebungsvariablen erfordert, können Sie diese auch in der crontab-Datei definieren.

cron führt Ihren Befehl mit cwd == $ HOME aus

Unabhängig davon, wo sich das von Ihnen ausgeführte Programm im Dateisystem befindet, ist das aktuelle Arbeitsverzeichnis des Programms beim Ausführen von cron das Ausgangsverzeichnis des Benutzers . Wenn Sie auf Dateien in Ihrem Programm zugreifen, müssen Sie dies berücksichtigen, wenn Sie relative Pfade verwenden oder (vorzugsweise) überall vollqualifizierte Pfade verwenden, und so allen viel Verwirrung ersparen.

Der letzte Befehl in meiner Crontab wird nicht ausgeführt

Cron verlangt im Allgemeinen, dass Befehle mit einer neuen Zeile beendet werden. Bearbeiten Sie Ihre Crontab; Gehen Sie zum Ende der Zeile, die den letzten Befehl enthält, und fügen Sie eine neue Zeile ein (drücken Sie die Eingabetaste).

Überprüfen Sie das Crontab-Format

Sie können keine Crontab-formatierte Crontab für/etc/crontab oder die Fragmente in /etc/cron.d und umgekehrt verwenden. Eine vom Benutzer formatierte Crontab enthält keinen Benutzernamen an der 6. Position einer Zeile, während eine vom System formatierte Crontab den Benutzernamen enthält und den Befehl als dieser Benutzer ausführt.

Ich habe eine Datei in /etc/cron.{hourly,daily,weekly,monthly} abgelegt und sie wird nicht ausgeführt

  • Stellen Sie sicher, dass der Dateiname keine Erweiterung hat, siehe run-parts
  • Stellen Sie sicher, dass die Datei über Ausführungsberechtigungen verfügt.
  • Teilen Sie dem System mit, was bei der Ausführung Ihres Skripts verwendet werden soll (z. B. setzen Sie #!/bin/sh Oben).

Cron datumsbezogene Fehler

Wenn Ihr Datum kürzlich durch ein Benutzer- oder Systemupdate, eine Zeitzone oder eine andere geändert wurde, verhält sich crontab unregelmäßig und weist bizarre Fehler auf, die manchmal funktionieren, manchmal nicht. Dies ist der Versuch von crontab, zu versuchen, "zu tun, was Sie wollen", wenn sich die Zeit darunter ändert. Das Feld "Minute" wird unwirksam, nachdem die Stunde geändert wurde. In diesem Szenario werden nur Sternchen akzeptiert. Starten Sie cron neu und versuchen Sie es erneut, ohne eine Verbindung zum Internet herzustellen (damit das Datum nicht auf einen der Zeitserver zurückgesetzt werden kann).

Wieder Prozentzeichen

Um den Rat zu Prozentzeichen hervorzuheben, hier ein Beispiel dafür, was cron mit ihnen macht:

# cron entry
* * * * * cat >$HOME/cron.out%foo%bar%baz

erstellt die Datei ~/cron.out mit den 3 Zeilen

foo
bar
baz

Dies ist besonders aufdringlich, wenn Sie den Befehl date verwenden. Achten Sie darauf, den Prozentzeichen zu entkommen

* * * * * /path/to/command --day "$(date "+\%Y\%m\%d")"
352
Eric Leschinski

Debian Linux und sein Derivat (Ubuntu, Mint usw.) weisen einige Besonderheiten auf, die die Ausführung Ihrer Cron-Jobs verhindern können. insbesondere die Dateien in /etc/cron.d, /etc/cron.{hourly,daily,weekly,monthly} Muss :

  • im Besitz von root sein
  • nur durch root beschreibbar sein
  • nicht für Gruppen- oder andere Benutzer beschreibbar sein
  • habe einen Namen ohne Punkte '.' oder ein anderes Sonderzeichen außer '-' und '_'.

Der letzte schmerzt regelmäßig ahnungslose Benutzer; insbesondere jedes Skript in einem dieser Ordner mit dem Namen whatever.sh, mycron.py, testfile.pl usw. wird nicht jemals ausgeführt.

Nach meiner Erfahrung war dieser spezielle Punkt bei weitem der häufigste Grund für einen nicht ausgeführten Cronjob bei Debian und Derivaten.

Sehen man cron für weitere Details, falls erforderlich.

25
wazoox

Wenn Ihre Cronjobs nicht mehr funktionieren, überprüfen Sie, ob Ihr Passwort nicht abgelaufen ist. Seitdem werden alle Cronjobs beendet.
Es werden Nachrichten in /var/log/messages ähnlich der folgenden, die Probleme bei der Authentifizierung des Benutzers zeigt:

(username) FAILED to authorize user with PAM (Authentication token is no longer valid; new one required)

20
Munkeh72

Gelegentliche und unregelmäßige Zeitpläne

Cron ist alles in allem ein sehr einfacher Scheduler, und die Syntax ermöglicht es einem Administrator nicht leicht, etwas ungewöhnlichere Zeitpläne zu formulieren.

Betrachten Sie den folgenden Job, der üblicherweise als "command alle 5 Minuten ausführen" erklärt wird:

*/5 * * * * /path/to/your/command

gegen:

*/7 * * * * /path/to/your/command

welches nicht immer alle 7 Minuten command ausführt .

Denken Sie daran, dass die / Zeichen kann verwendet werden, um einen Schritt einzuführen, aber diese Schritte werden nicht über das Ende einer Reihe hinaus gewickelt, z. */7, Der jede 7. Minute von den Minuten 0-59 Übereinstimmt, dh 0,7,14,21,28,35,42,49,56, aber zwischen einer Stunde und Das nächste wird nur 4 Minuten zwischen den Chargen liegen, nach 00:56 beginnt eine neue Serie bei 01:00, 01:07 Usw. (und Stapel werden nicht auf 01:03, 01:10, 01:17 Usw. ausgeführt).


Was ist stattdessen zu tun?

Mehrere Stapel erstellen

Erstellen Sie anstelle eines einzelnen Cron-Jobs mehrere Stapel, die zusammen den gewünschten Zeitplan ergeben.

Wenn Sie beispielsweise alle 40 Minuten einen Stapel ausführen (00:00, 00:40, 01:20, 02:00 usw.), erstellen Sie zwei Stapel, einen, der zweimal in den geraden Stunden ausgeführt wird, und einen zweiten, der nur in den ungeraden Stunden ausgeführt wird:

# The following lines create a batch that runs every 40 minutes i.e.

# runs on   0:00, 0:40,        02:00, 02:40         04:00 etc to 22:40
0,40 */2 * * * /path/to/your/command

# runs on               01:20,               03:20,       etc to 23:20
20 1/2 * * * /path/to/your/command

# Combined: 0:00, 0:40, 01:20, 02:00, 02:40, 03:20, 04:00 etc.

Führen Sie Ihre Stapel weniger häufig aus

Anstatt Ihren Stapel alle 7 Minuten auszuführen, was schwierig ist, ihn in mehrere Stapel aufzuteilen, führen Sie ihn stattdessen einfach alle 10 Minuten aus.

Starten Sie Ihre Stapel häufiger (verhindern Sie jedoch, dass mehrere Stapel gleichzeitig ausgeführt werden).

Viele ungerade Zeitpläne entstehen, weil die Chargenlaufzeiten zunehmen/schwanken und die Chargen dann mit einem zusätzlichen Sicherheitsabstand geplant werden, um zu verhindern, dass sich nachfolgende Läufe derselben Charge überlappen und gleichzeitig ausgeführt werden.

Denken Sie stattdessen anders und erstellen Sie einen Cronjob, der ordnungsgemäß fehlschlägt, wenn ein vorheriger Lauf noch nicht abgeschlossen ist, der aber ansonsten ausgeführt wird. Siehe dies Q & A :

* * * * * /usr/bin/flock -n /tmp/fcj.lockfile /usr/local/bin/frequent_cron_job 

Dadurch wird fast sofort ein neuer Lauf gestartet, sobald der vorherige Lauf von/usr/local/bin/frequent_cron_job abgeschlossen ist.

Starten Sie Ihre Stapel häufiger (aber beenden Sie sie ordnungsgemäß, wenn die Bedingungen nicht stimmen).

Da die Cron-Syntax begrenzt ist, können Sie komplexere Bedingungen und Logik in den Stapeljob selbst (oder in ein Wrapper-Skript um den vorhandenen Stapeljob) einfügen. Auf diese Weise können Sie die erweiterten Funktionen Ihrer bevorzugten Skriptsprachen nutzen, Ihren Code kommentieren und schwer lesbare Konstrukte im crontab-Eintrag selbst verhindern.

In bash würde das seven-minute-job Dann ungefähr so ​​aussehen wie:

#!/bin/bash
# seven-minute-job
# This batch will only run when 420 seconds (7 min) have passed
# since the file /tmp/lastrun was either created or updated

if [ ! -f /tmp/lastrun ] ; then
    touch /tmp/lastrun
fi

if [ $(( $(date +%s) - $(date -r /tmp/lastrun +%s) )) -lt 420 ] ; then
     # The minimum interval of 7 minutes between successive batches hasn't passed yet.
    exit 0
fi

####  Start running your actual batch job below

/path/to/your/command

#### actual batch job is done, now update the time stamp
date > /tmp/lastrun
#EOF

Was Sie dann sicher (versuchen) können, jede Minute zu laufen:

* * * * * /path/to/your/seven-minute-job

Ein anderes, aber ähnliches Problem wäre, einen Stapel so zu planen, dass er am ersten Montag eines jeden Monats (oder am zweiten Mittwoch) usw. ausgeführt wird. Planen Sie einfach, dass der Stapel jeden Montag ausgeführt wird, und beenden Sie ihn, wenn das Datum nicht zwischen 1 liegtst oder 7th und der Wochentag ist nicht Montag.

#!/bin/bash
# first-monday-of-the-month-Housekeeping-job

# exit if today is not a Monday (and prevent locale issues by using the day number) 
if [ $(date +%u) != 1 ] ; then
  exit 0
fi

# exit if today is not the first Monday
if [ $(date +%d) -gt 7 ] ; then
  exit 0
fi

####  Start running your actual batch job below

/path/to/your/command

#EOF

Was Sie dann sicher (versuchen) können, jeden Montag zu laufen:

0 0 * * 1 /path/to/your/first-monday-of-the-month-Housekeeping-job

Benutze kein cron

Wenn Ihre Anforderungen komplex sind, können Sie ein fortschrittlicheres Produkt verwenden, das für die Ausführung komplexer Zeitpläne (verteilt auf mehrere Server) ausgelegt ist und Trigger, Jobabhängigkeiten, Fehlerbehandlung, Wiederholungsversuche und Wiederholungsüberwachung usw. unterstützt. Die Fachsprache lautet "Unternehmen" " Job Scheduling und/oder" Workload Automation ".

14
HBruijn

PHP-spezifisch

Wenn Sie einen Cron-Job haben wie:

php /bla/bla/something.php >> /var/logs/somelog-for-stdout.log

Und im Falle von Fehlern erwarten Sie, dass sie an Sie gesendet werden, aber nicht - überprüfen Sie dies.

PHP sendet standardmäßig keine Fehler an STDOUT. @see https://bugs.php.net/bug.php?id=22839

Um dies zu beheben, fügen Sie in clis php.ini oder in Ihrer Zeile (oder in Ihrem Bash-Wrapper für PHP) Folgendes hinzu:

  • --define display_startup_errors = 1
  • --define display_errors = 'stderr'

Mit der ersten Einstellung können Sie Fatale wie 'Memory oops' und mit der zweiten Einstellung alle auf STDERR umleiten. Erst wenn Sie gut schlafen können, werden alle an die E-Mail Ihres Stamms gesendet, anstatt nur protokolliert zu werden.

8
gaRex

Hinzufügen meiner Antwort von hier der Vollständigkeit halber und Hinzufügen einer weiteren potenziell hilfreichen Ressource:

Der Benutzer cron hat einen anderen $PATH Als Sie:

Ein häufiges Problem, das Benutzer mit crontab -Einträgen haben, besteht darin, dass sie vergessen, dass cron in einem anderen environment ausgeführt wird als als angemeldeter Benutzer. Ein Benutzer erstellt beispielsweise ein Programm oder Skript in seinem Verzeichnis $HOME Und gibt den folgenden Befehl ein, um es auszuführen:

$ ./certbot ... 

Der Befehl läuft perfekt von seiner Kommandozeile aus. Der Benutzer fügt diesen Befehl dann seinem crontab hinzu, stellt jedoch fest, dass dies nicht funktioniert:

*/10 * * * * ./certbot ....

Der Grund für den Fehler in diesem Fall ist, dass ./ Für den Benutzer cron ein anderer Speicherort ist als für den angemeldeten Benutzer. Das heißt, das environment ist anders! Der PATH ist Teil des environment und unterscheidet sich normalerweise für den Benutzer cron. Erschwerend kommt hinzu, dass environment für cron nicht für alle * nix Distributionen gleich ist, und es gibt mehrere Versionen von cron

Eine einfache Lösung für dieses spezielle Problem besteht darin, dem Benutzer cron eine vollständige Pfadangabe im Eintrag crontab zu geben:

0 22 * * * /path/to/certbot .....

Was ist der cron Benutzer environment?

In einigen Fällen müssen wir möglicherweise die vollständige environment - Spezifikation für cron auf unserem System kennen (oder wir sind einfach nur neugierig). Was ist das environment für den cron Benutzer und wie unterscheidet es sich von unserem? Weiter benötigen wir möglicherweise um das environment für einen anderen cron Benutzer zu kennen - root zum Beispiel ... was ist das root Benutzer environment mit cron? Eine Möglichkeit, dies zu lernen, besteht darin, cron zu bitten, uns Folgendes zu sagen:

  1. Erstellen Sie ein Shell-Skript in Ihrem Home-Verzeichnis (~/) Wie folgt (oder mit dem Editor Ihrer Wahl):
$ nano ~/envtst.sh
  1. Geben Sie nach der Anpassung an Ihr System/Ihren Benutzer Folgendes in den Editor ein:
#!/bin/sh 
/bin/echo "env report follows for user "$USER >> /home/you/envtst.sh.out 
/usr/bin/env >> /home/you/envtst.sh.out 
/bin/echo "env report for user "$USER" concluded" >> /home/you/envtst.sh.out
/bin/echo " " >> /home/you/envtst.sh.out
  1. Speichern Sie die Datei, beenden Sie den Editor und legen Sie die Dateiberechtigungen als ausführbar fest.
$ chmod a+rx ~/envtst.sh
  1. Führen Sie das soeben erstellte Skript aus und überprüfen Sie die Ausgabe in /home/you/envtst.sh.out. Diese Ausgabe zeigt Ihre aktuelle Umgebung als $USER An, als den Sie angemeldet sind:
$ ./envtst.sh $$ cat /home/you/envtst.sh.out
  1. Öffnen Sie Ihr crontab zum Bearbeiten:
$ crontab -e -u root
  1. Geben Sie die folgende Zeile am unteren Rand Ihres crontab ein:
* * * * *  /home/you/envtst.sh >> /home/you/envtst.sh.err 2>&1

ANTWORT: Die Ausgabedatei /home/you/envtst.sh.out Enthält eine Liste der environment für den "root cron user". Wenn Sie das wissen, passen Sie Ihren Eintrag crontab entsprechend an.

Ich kann den Zeitplan, den ich benötige, nicht in meinem crontab Eintrag angeben:

Der Zeitplaneintrag für crontab ist natürlich in man crontab Definiert, und Sie sollten dies lesen. Das Lesen von man crontab Und das Verstehen des Zeitplans sind jedoch zwei verschiedene Dinge. Und Versuch und Irrtum in einer Zeitplanspezifikation können sehr langwierig werden. Glücklicherweise gibt es eine Ressource, die helfen kann: der Crontab-Guru. . Geben Sie Ihre Zeitplanspezifikation ein und es wird der Zeitplan in einfacher englischer Sprache erklärt.

Und wenn Sie Gefahr laufen, mit einer der anderen Antworten hier überflüssig zu werden, denken Sie nicht, dass Sie auf einen einzelnen crontab -Eintrag beschränkt sind, da Sie einen Job planen müssen. Sie können so viele crontab -Einträge verwenden, wie Sie benötigen, um den gewünschten Zeitplan zu erhalten.

0
Seamus