Cron: Podstawy

Opublikowano: 14.12.2021 - tagi: Cron Komenda Linux Narzędzie

Czym jest Cron?

Cron to narzędzie służące do cyklicznego uruchomienia określonej akcji. Tą akcją może być dowolny skrypt napisany w Bashu, NodeJS itp.

Załóżmy, że potrzebujesz co godzinę wyczyścić dane z tabeli, w bazie danych. Mając już gotowy skrypt możesz skorzystać z Crona, żeby odpalać go, w danym przedziale czasowym.

Cron to proces działający w tle, który uruchamia określone zadania.

Składnia Crona

Zanim pokażę jak skonfigurować Crona najpierw poznajmy składnię — w jaki sposób można dodawać wpisy.

Przykład:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
*  *  *  *  * command to be executed

Składnia wpisu składa się z następujących składników:

  1. Minuta — Minuta, w której ma zostać uruchomione zadanie. Zakres: 0 - 59.
  2. Godzina — Godzina, w której ma zostać uruchomione zadanie. Zakres: 0-23.
  3. Dzień (miesiąca) - Dzień miesiąca, w którym ma zostać uruchomione zadanie. Zakres: 1-31
  4. Miesiąc — Miesiąc, w którym ma zostać uruchomione zadanie. Zakres: 1-12.
  5. Dzień (tygodnia) — Dzień tygodnia, w którym ma zostać uruchomione zadanie. Zakres: 0-6, gdzie niedziela to 0 lub 7. Można użyć też skrótów tekstowych dla dni: sun,mon,tue,wed,thu,fri,sat.

Spójrzmy na tę regułę:

5 * * * * script.sh

Ona sprawi, że w piątej minucie zostanie odpalony dane polecenie. Uwaga: w piątej minucie, a nie co pięć minut to jest różnica! Jak odpalić zadanie, co pięć minut napiszę za chwilę.

Operatory

Cron w swojej składni udostępnia także listę operatorów, które mogą nam się przydać:

  1. Gwiazdka: * - W taki sposób informujesz Crona, że nie chcesz określić konkretnej wartości.
  2. Przecinek: , - Użyj tego operatora kiedy chcesz określić kilka wartości. Na przykład chcesz, żeby polecenie zostało wykonane, w godzinach: 12 i 18 napisz: 12,18 w polu godzina.
  3. -: Jeśli chcesz określić zakres "od — do", użyj tego operatora. Chcesz napisać polecenie, żeby było wywoływane od poniedziałku do piątku? Napisz: 1-5 w polu dzień tygodnia.
  4. /: Tego operatora używasz kiedy chcesz powiedzieć Cronowi: "uruchom zadanie co...". Jeśli chcesz uruchomić skrypt co 4 godziny piszesz: */4, w polu godzina.

Jest jeszcze kilka innych operatorów, ale tutaj wymieniłem wg mnie najważniejsze.

Więc jak wywołać skrypt co 5 minut?

*/5 * * * * script.sh

Jak skonfigurować Crona?

Żeby dodać zadanie do cyklicznego uruchomienia, musimy najpierw dodać wpis do pliku o nazwie crontab.

Ciekawostka: mamy dwa rodzaje plików crontab: systemowy i użytkownika. Ten systemowy możemy edytować na prawach root'a, a użytkownika gdy jesteśmy na danym koncie zalogowani. Na przykład: użytkownik Gizmo nie będzie mógł edytować crontab użytkownika Sisi.

Dodanie wpisu do pliku

Żeby dodać wpis do crontab, wpisz komendę:

crontab -e

Prawdopodobnie zostaniesz zapytany jakiego edytora użyć do edycji.

Edytujesz plik zgodnie ze składnią opisaną wyżej.

Podgląd dodanych zadań

Komenda:

crontab -l

Przykłady

Kilka przykładów reguł napisanych w Cronie wraz z opisem:

  1. 15 12 * * 1 script.sh - W każdy poniedziałek o 12:15 uruchom script.sh
  2. * * * * 1,5 script.sh - Uruchamiaj script.sh w każdy poniedziałek i piątek
  3. 0 0 * * * script.sh - Uruchamiaj script.sh każdego dnia o północy: 00:00

Narzędzia

Składnia na pierwszy rzut oka może nie do końca być zrozumiała. W internecie można znaleźć wiele narzędzi, które pomogą nam w budowaniu reguł do Crona.

Jedno z nich znajdziesz pod tym linkiem.