Składnia Crontab Day of the Week

204

W crontab pole Dzień tygodnia biegnie od 0 - 6lub 1 -7?

Widzę sprzeczne informacje na ten temat. stany wikipedia 0-6i inne strony, które widziałem, to 1-7.

Jakie byłyby implikacje, użycie 0lub 7nieprawidłowe? tj. czy cron nadal będzie działał?

Marty Wallace
źródło

Odpowiedzi:

373

0i 7oba oznaczają niedzielę, możesz użyć tego, co chcesz, więc pisanie 0-6 lub 1-7 ma ten sam wynik.

Ponadto, zgodnie z sugestią @Henrik, możliwe jest zastąpienie numerów przez skróconej nazwy dni, takich jak MON, THUitp:

0 - Sun      Sunday
1 - Mon      Monday
2 - Tue      Tuesday
3 - Wed      Wednesday
4 - Thu      Thursday
5 - Fri      Friday
6 - Sat      Saturday
7 - Sun      Sunday

Graficznie:

 ┌────────── minute (0 - 59)
 │ ┌──────── hour (0 - 23)
 │ │ ┌────── day of month (1 - 31)
 │ │ │ ┌──── month (1 - 12)
 │ │ │ │ ┌── day of week (0 - 6 => Sunday - Saturday, or
 │ │ │ │ │                1 - 7 => Monday - Sunday)
 ↓ ↓ ↓ ↓ ↓
 * * * * * command to be executed

Na koniec, jeśli chcesz określić dzień po dniu, możesz oddzielić dni przecinkami, na przykład SUN,MON,THUwykona polecenie tylko w niedziele, poniedziałki w czwartki.

Więcej informacji można znaleźć w artykule Wikipedii o Cronie .

fedorqui „SO przestań szkodzić”
źródło
4
ok, tego nie zdawałem sobie sprawy, że niedziela może być 0 lub 7. dzięki
Marty Wallace
15
Pamiętaj, że nie możesz zrobić Sat-Sun6-7Sat,Sun
:,
Czy możesz potwierdzić, że wielkość liter nie uwzględnia wielkości liter? Przełączać między kilka razy SUN, Sun, Sundayw swojej odpowiedzi
MichaelChirico
1
@MichaelChirico oh, dobra uwaga. Sprawdzanie artykułu Wikipedii o Cronie Przeczytałem W skrótach miesiąca i dnia tygodnia nie jest rozróżniana wielkość liter .
fedorqui „SO przestań krzywdzić”
104
    :-) Sunday    |    0  ->  Sun
                  |  
        Monday    |    1  ->  Mon
       Tuesday    |    2  ->  Tue
     Wednesday    |    3  ->  Wed
      Thursday    |    4  ->  Thu
        Friday    |    5  ->  Fri
      Saturday    |    6  ->  Sat
                  |  
    :-) Sunday    |    7  ->  Sun

Jak widać powyżej, i jak powiedziano wcześniej, numery 0i 7oba są przypisane do niedzieli. Wymieniono także skrócone w języku angielskim dni tygodnia, które można również wykorzystać w crontab.

Przykłady użycia liczby lub skrótu

15 09 * * 5,6,0             command
15 09 * * 5,6,7             command
15 09 * * 5-7               command
15 09 * * Fri,Sat,Sun       command

Cztery przykłady robią to samo i wykonują polecenie w każdy piątek, sobotę i niedzielę o godzinie 9.15.

Szczegółowo

Posiadanie dwóch liczb 0i 7na niedzielę może być przydatne do pisania zakresów dni roboczych rozpoczynających się 0lub kończących na 7. Możesz więc pisać zakresy zaczynające się od niedzieli lub kończące się na nim, na przykład 0-2lub 5-7(zakresy muszą zaczynać się od niższej liczby i kończyć na wyższej). Skrótów nie można użyć do zdefiniowania zakresu dni tygodnia.

Henrik
źródło
1
Dla jasności „Skrótów nie można użyć do zdefiniowania zakresu dni tygodnia”. stwierdzenie tutaj wydaje się być sposobem na powiedzenie, że skrótów nie można rozdzielać znakami łącznika minus, tylko przecinki. Innymi słowy, Fri,Sat,Sunnie można go skrócić Fri-Sun.
Patrick Dark
8

Możesz także używać nazw dni jak Monna poniedziałek, Tuewtorek itp. Jest bardziej przyjazny dla człowieka.

Cyril Bouthors
źródło
To nie zadziała w przypadku niektórych dystrybucji; testując z Ubuntu 14.04.3 LTS, dostałem „/tmp/crontab.Nuq9GE/crontab":24: zły dzień tygodnia”
0x4B1D
3
@Nikita sprawdza literówki lub dodatkowe spacje. Mam zarówno „pn – pt”, jak i „czw” w moim crontabie na Ubuntu 14.04.3 i oba działają dobrze. Podejrzewam, że jeśli między dowolnymi postaciami jest spacja, możesz otrzymać błąd.
Dale Anderson