Missverständnis der Crontab-Zeitplanregel

419
heximal

Ich habe ein seltsames Verhalten einer Regel, die unerwartet arbeitet.

*/40 * * * * myshellcommand here 

Ich würde zwar alle 40 Minuten laufen, z

00.00 00.40 01.20 02.00 etc 

stattdessen läuft es

00.00 00.40 01.00 01.40 02.00 etc. 

Hat jemand eine Idee woran das liegen kann?

1

1 Antwort auf die Frage

3
hymie

Nichts ist falsch. Es funktioniert wie beabsichtigt. * setzt sich zu Beginn jeder Stunde / Tag / Monat zurück. Anders ausgedrückt: * ist ein Ersatz für den maximalen Wertebereich des betreffenden Werts. * In der Minutenspalte steht also für 0-59, und * / 40 bedeutet "ab 0, alle 40 Minuten bis 59". Weitere Informationen finden Sie unter "Sonderzeichen" auf der Cron-Wikipedia-Seite .

Sie müssen den Job wahrscheinlich alle 20 Minuten ausführen und das Programm entscheiden lassen, ob es ausgeführt werden soll oder nicht. Oder machen Sie es mit zwei Zeilen

0,40 0,2,4,6,8,10,12,14,16,18,20,22 * * * myshellcommand 20 1,3,5,7,9,11,13,15,17,19,21,23 * * * myshellcommand 

Beachten Sie, dass dies etwas kompakter geschrieben werden kann:

0,40 */2 * * * myshellcommand 20 1-23/2 * * * myshellcommand 

In diesem Fall gibt * / 2 jede zweite Stunde ab 0 an (da * 0-23 entspricht) und 1-23 / 2 jede zweite Stunde ab Stunde 1.

Vielen Dank. wahrscheinlich hast du recht. Wenn keine andere Meinung erscheint, akzeptiere ich Ihre Antwort als richtig heximal vor 10 Jahren 0