crontab (5) definiuje następujące pola:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
i wyjaśnia:
Step values can be used in conjunction with ranges. Following a range with ``/<number>'' specifies skips of the number's value through the range. For example, ``0-23/2'' can be used in the hours field to specify command execution every other hour (the alternative in the V7 standard is ``0,2,4,6,8,10,12,14,16,18,20,22'').
Tak więc, o ile rozumiem, nie ma dwutygodniowych ofert pracy. Jestem pewien, że istnieją obejścia, jakie są twoje? A może coś przeoczyłem?
Odpowiedzi:
Możesz sprawić, by cron prowadził ją w każdą środę, a następnie poproś, aby rzecz zdecydowała, czy jest to tydzień parzysty czy dziwny. na przykład:
źródło
Zakresy obsługi wielu cronów (nie określiłeś, których używasz). Coś w stylu
Uderzy w pierwszą i trzecią środę miesiąca.
źródło
-
lub jest/
zaangażowany, prawdopodobnie warto skomentować, aby opisać harmonogram)man 5 crontab
: „ Dzień wykonania polecenia może być określony przez dwa pola - dzień miesiąca i dzień tygodnia. Jeśli oba pola są ograniczone (tzn. Nie są *), polecenie zostanie uruchomione, gdy jedno z pól będzie pasować do aktualny czas. Na przykład „30 4 1,15 * 5” spowoduje, że polecenie zostanie uruchomione o 4:30 rano 1 i 15 każdego miesiąca oraz w każdy piątek ”(moje podkreślenie).Aby uzyskać coś, co musi być uruchamiane co drugi tydzień, skorzystaj z tej linijki:
Ten konkretny skrypt ma zostać uruchomiony w piątki. Tydzień do wykonania można ustawić za pomocą „-eq 0” lub „-eq 1”
źródło
Anacron jest dobrym obejściem ograniczeń crona.
źródło
Jeśli twoje potrzeby nie są dosłownie dwa razy w tygodniu, możesz po prostu uruchomić cronjob 1 i 15 dnia miesiąca:
Który działa o 8:15 rano pierwszego i piętnastego każdego miesiąca, niezależnie od dnia tygodnia.
źródło
Z tego wyjaśnienia ustawienie 3/2 w polu tygodnia powinno uruchamiać zadanie w każdą drugą środę - jest to niejawne, ale myślę, że wykonalne.
źródło
for(int i=3; i <=3 ; i+=2) {}
ponieważ przechodzi przez to tylko raz, nie ma znaczenia, czy „krok” to 1 czy 2.