Przewodnik po wyrażeniach Crona

1. Przegląd

Mówiąc najprościej, cron jest podstawowym narzędziem dostępnym w systemach opartych na Uniksie. Umożliwia użytkownikom planowanie zadań, które mają być uruchamiane okresowo w określonym dniu / czasie. Jest to oczywiście świetne narzędzie do automatyzacji wielu przebiegów procesów, które w innym przypadku wymagałyby interwencji człowieka.

Cron działa jako proces demona - oznacza to, że wystarczy go uruchomić tylko raz i będzie działał w tle. Ten proces wykorzystuje crontab do odczytywania wpisów harmonogramów i uruchamiania zadań.

Z biegiem czasu format wyrażeń cron stał się szeroko stosowany i wiele innych programów i bibliotek korzysta z niego.

2. Praca z Crontab

Cron Plan jest prosty plik tekstowy umieszczony pod / var / spool / cron / crontab w systemach Linux. Nie możemy bezpośrednio edytować plików crontab ; musimy uzyskać do niego dostęp za pomocą polecenia crontab .

Na przykład, aby otworzyć plik crontab , musimy uruchomić to polecenie:

crontab -e

Każda linia w crontab jest wpisem zawierającym wyrażenie i polecenie do uruchomienia:

* * * * * /usr/local/ispconfig/server/server.sh

Ten wpis uruchamia wspomniany skrypt co minutę.

3. Wyrażenie Cron

Rozumiemy wyrażenie cron ; składa się z pięciu pól:

3.1. Znaki specjalne w wyrażeniu

  • * (all) - określa, że ​​zdarzenie powinno mieć miejsce dla każdej jednostki czasu. Na przykład „*” w polu < minuta> - oznacza „na każdą minutę”
  • ? (dowolny) - jest używany w polach < dzień miesiąca> i < dzień tygodnia> do oznaczenia dowolnej wartości - pomiń wartość pola. Na przykład, jeśli chcemy uruchomić skrypt „5 dnia każdego miesiąca” niezależnie od tego, który dzień tygodnia przypada na tę datę, określamy „ ? ”W < dzień-of-tygodniowego> dziedzinie
  • - (zakres) - określa zakres wartości. Na przykład „ 10-11 ” w pole oznacza „10 i 11 godzina”
  • , (wartości) - określa wiele wartości. Na przykład „ PON., ŚR., PIĄ” w polu < dzień tygodnia> oznacza dni „Poniedziałek, Środa i Piątek”
  • / (przyrosty) - określa wartości przyrostowe. Na przykład „5/15” w polu < minuta> oznacza „5, 20, 35 i 50 minut na godzinę”
  • L (ostatni) - ma różne znaczenie, gdy jest używany w różnych dziedzinach. Na przykład, jeśli zostanie zastosowany w polu < dzień miesiąca> , oznacza to ostatni dzień miesiąca, tj. „31 stycznia” i tak dalej, jak w miesiącu kalendarzowym. Można go używać z wartością przesunięcia, np. „ L-3 ”, co oznacza „trzeci do ostatniego dnia miesiąca kalendarzowego”. W < dzień tygodnia> określa „ostatni dzień tygodnia”. Można go również użyć z inną wartością w < dzień tygodnia> , np. „ 6L ”, co oznacza „ostatni piątek”
  • W (dzień tygodnia) - określa dzień tygodnia (od poniedziałku do piątku) najbliższy danemu dniu miesiąca. Na przykład, jeśli określimy „ 10 W ” w polu < dzień miesiąca> , oznacza to „dzień tygodnia zbliżony do dziesiątego dnia tego miesiąca”. Więc jeśli „10” to sobota, to zadanie zostanie uruchomione „9”, a jeśli „10” to niedziela, to zostanie uruchomione „11th”. Jeśli określimy „ 1 W ” w < dzień miesiąca>, a „1.” to sobota, to zadanie zostanie uruchomione w „3.”, czyli w poniedziałek, i nie wróci do poprzedniego miesiąca
  • # - określa „ N-to ” wystąpienie dnia tygodnia miesiąca, na przykład „3. piątek miesiąca” można wskazać jako „ 6 # 3

3.2. Przykłady wyrażeń Crona

Zobaczmy kilka przykładów wyrażeń cron przy użyciu kombinacji pól i znaków specjalnych:

O 12:00 codziennie (w południe):

0 12 * * ?

Co 5 minut od 13:00 do 13:55, a następnie od 18:00 do 18:55, każdego dnia:

0/5 13,18 * * ?

Co minutę od godziny 13:00 do godziny 13:05 każdego dnia:

0-5 13 * * ?

O 13:15 i 13:45 w każdy wtorek w czerwcu:

15,45 13 ? 6 Tue

O 9:30 w każdy poniedziałek, wtorek, środę, czwartek i piątek:

30 9 ? * MON-FRI

O 9:30 15 dnia każdego miesiąca:

30 9 15 * ?

O godzinie 18:00 ostatniego dnia każdego miesiąca:

0 18 L * ?

O godzinie 18:00 od trzeciego do ostatniego dnia każdego miesiąca:

0 18 L-3 * ?

O 10:30 w ostatni czwartek każdego miesiąca:

30 10 ? * 5L

O 10:00 w trzeci poniedziałek każdego miesiąca:

0 10 ? * 2#3

O północy każdego dnia o godzinie 12:00 przez pięć dni, począwszy od dziesiątego dnia miesiąca:

0 0 10/5 * ?

4. Specjalne ciągi Cron

Oprócz pól określonych w wyrażeniu cron istnieje również wsparcie dla niektórych specjalnych, predefiniowanych wartości - których możemy użyć zamiast pól:

  • @reboot - uruchom raz przy starcie
  • @yearly lub @annualy - uruchamiaj raz w roku
  • @monthly - uruchamiaj raz w miesiącu
  • @weekly - uruchamiaj raz w tygodniu
  • @daily lub @midnight - uruchamiaj raz dziennie
  • @hourly - uruchamiaj co godzinę

5. Wniosek

W tym krótkim artykule omówiliśmy zadania crona i crontab .

Widzieliśmy również wiele przykładów wyrażeń, których możemy używać w naszej codziennej pracy lub po prostu wywnioskować z nich inne wyrażenia.