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.