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:
- Minuta — Minuta, w której ma zostać uruchomione zadanie. Zakres: 0 - 59.
- Godzina — Godzina, w której ma zostać uruchomione zadanie. Zakres: 0-23.
- Dzień (miesiąca) - Dzień miesiąca, w którym ma zostać uruchomione zadanie. Zakres: 1-31
- Miesiąc — Miesiąc, w którym ma zostać uruchomione zadanie. Zakres: 1-12.
- 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ć:
- Gwiazdka: * - W taki sposób informujesz Crona, że nie chcesz określić konkretnej wartości.
- 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.
- -: 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.
- /: 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:
15 12 * * 1 script.sh
- W każdy poniedziałek o 12:15 uruchom script.sh* * * * 1,5 script.sh
- Uruchamiaj script.sh w każdy poniedziałek i piątek0 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.