Poradniki > Jak zarządzać planowanymi operacjami z Crontab na CentOS 8

Jak zarządzać planowanymi operacjami z Crontab na CentOS 8

Zobacz poradnik tutaj

Opublikowany: 01 września 2020

CentOS Crontab

Wstęp

Demon Cron to narzędzie oparte na systemie Unix, którego można używać w dowolnej dystrybucji Linuksa. Cron pozwala zautomatyzować różne zadania (planowanie) związane z konserwacją lub administracją systemu.

Dzięki Crontab można planować czynności, zwane Cron Jobs, w określonych odstępach czasu. Na przykład określone polecenie lub skrypt można powtarzać codziennie o określonej godzinie, w określonej liczbie dni lub w określonym dniu.

W tym przewodniku zobaczysz, jak najlepiej zainstalować i używać demona planowania Cron na serwerze Linux z CentOS 8.

Aby rozpocząć, połącz się ze swoim serwerem przez połączenie SSH. Jeśli jeszcze tego nie zrobiłeś, postępuj zgodnie z naszym przewodnikiem, aby bezpiecznie łączyć się za pomocą protokołu SSH. W przypadku serwera lokalnego przejdź do następnego kroku i otwórz terminal swojego serwera.

Instalacja Cron

Wiele dystrybucji Linuksa ma już domyślnie zainstalowany Cron. Jeśli nie jest wstępnie zainstalowany na serwerze z CentOS, zainstaluj go, bezpośrednio wysyłając zapytanie do oficjalnych repozytoriów.

Najpierw zaktualizuj pakiety na swoim komputerze za pomocą polecenia:

$ sudo dnf update

Następnie kontynuuj instalację Crona za pośrednictwem:

$ sudo dnf install crontabs

Po zakończeniu instalacji Cron zostanie zainstalowany w twoim systemie, ale nie oznacza to, że już działa. W rzeczywistości za pierwszym razem trzeba go uruchomić ręcznie, wpisując:

$ sudo systemctl start crond.service

Zaleca się jednak ustawienie Crona podczas uruchamiania systemu, aby nie trzeba było go uruchamiać ręcznie za każdym razem. Ponieważ to narzędzie umożliwia planowanie niektórych zadań, może być niewygodne, aby pamiętać o uruchamianiu go za każdym razem, gdy maszyna jest ponownie uruchamiana.

Aby to zrobić, wpisz następujące polecenie:

$ sudo systemctl enable crond.service

Planowanie operacji z Crontab

Wszystkie automatyzacje, później zdefiniowane przez użytkownika, nazywane są zadaniami i zapisywane w pliku o nazwie crontab.

Dla każdego profilu użytkownika obecnego w systemie istnieje crontab. Jeśli jest tylko jeden użytkownik, pamiętaj, że operacje wprowadzone w pliku crontab dla użytkownika root nie są wykonywane dla użytkownika innego niż root i odwrotnie.

Aby edytować plik crontab jako użytkownik inny niż root, uruchom polecenie:

$ crontab -e

Otworzy się ekran podobny do edytora tekstu, na którym można ustawić charakterystykę każdego zadania. Cron postępuje zgodnie z bardzo precyzyjną składnią, która zawiera listę parametrów do zdefiniowania, a następnie polecenie lub operację do określenia w czasie.

Wyjaśnimy jakie parametry należy określić dla każdego zadania, aby je poprawnie wykonać:

  • Minuta: zmienia się od 0 do 59 i wskazuje minutę, w której praca ma zostać wykonana
  • Godzina: przechodzi od 0 do 23 i wskazuje czas, który należy wykonać
  • DoM (dzień miesiąca): zakres od 1 do 31 i wskazuje dzień, w którym zadanie ma zostać wykonane
  • Miesiąc: trwa od 1 (stycznia) do 12 (grudnia) i wskazuje miesiąc, w którym praca ma być wykonana
  • DoW (dzień tygodnia): waha się od 0 (niedziela) do 6 (sobota) i wskazuje dzień tygodnia, w którym praca ma być wykonana.

Te parametry razem tworzą strukturę zaakceptowaną przez Cron do planowania polecenia. Dokładniej, składnia, której należy użyć, jest następująca:

> minute hour DoM Month Dow comando_da_eseguire 

Przykład polecenia zaakceptowanego przez Cron jest następujący:

> 15 18 5 * * curl http://www.google.com >> google_curl.txt 

Tak określone polecenie oznacza:

  • Kiedy jest 15 minuta
  • Kiedy jest 18 godzina
  • Kiedy jest 5 dzień miesiąca
  • Każdego miesiąca (*)
  • Bez względu na dzień (*)
  • Pobierz witrynę http://www.google.com i dodaj wynik do pliku „google_curl.txt".

Jak być może zauważyłeś, znak specjalny „*” oznacza „wszystkie możliwe wartości pola”, został wstawiony w poleceniu.

Jednak nie jest to jedyny znak specjalny, którego można użyć podczas definiowania zaplanowanego zadania. Pozostałe to:

  • „,”: Aby określić, że to samo zadanie ma być wykonywane w różnych momentach, zamiast pisać dwa identyczne zadania, różne momenty można zdefiniować w jednym zleceniu. W konsekwencji, aby powtórzyć precyzyjne polecenie zarówno o godzinie 8.30, jak i 8.45, wpisz „30.45 8 * * * polecenie”.
  • „-”: Aby powtórzyć jedno ze swoich zadań 10 razy po jednej minucie, zamiast tworzyć 10 różnych zadań, użyj tego znaku do zdefiniowania zakresu wartości w odpowiednim polu (w tym przypadku w odniesieniu do minut). W tym przypadku składnia polecenia byłaby podobna do następującej: „1-10 * * * * polecenie”.
  • „/”: Aby powtórzyć jedno z zadań za każdym razem po zadanej wartości czasu, umieść ten symbol obok znaku specjalnego „*”, tak aby podział między wartością znaku „*” i dzielnika zwrócił całość numer. Na przykład, aby powtarzać zadanie dokładnie co 2 godziny, zdefiniuj je zgodnie ze składnią pokazaną tutaj: "* * / 2 * * * polecenie".
    Uwaga: w przypadku godzin jedyne dozwolone wartości to 1,2,3,4,6,8 i 12.

Teraz, gdy wiesz, jak skonfigurować wszystkie możliwe zadania, oto kilka przykładów poleceń.

Examples of jobs

Uwaga: Dla wygody każda instrukcja została zebrana pod nazwą „command”, która nie reprezentuje rzeczywistego polecenia i zostanie wyraźnie zastąpiona operacją, którą chcesz zaplanować.

Na powyższym rysunku przedstawiono 5 przykładów zadań umieszczonych w pliku crontab:

  • command_1 jest uruchamiane co minutę
  • command_2 uruchamia się co 10 minut o każdej porze każdego dnia
  • command_3 uruchamia się codziennie o każdej godzinie po 30 minutach
  • polecenie_4 jest uruchamiane codziennie o każdej godzinie w odstępie 30 minut (jest to równoważne znaczeniu polecenia_3)
  • command_5 uruchamia się w każdy czwartek, piątek i sobotę o 15:30.

Aby dodać swoje zadania do pliku crontab, uruchom polecenie crontab -e, jak określono powyżej.

Uwaga: Należy pamiętać, że w CentOS plik crontab byłby otwierany za pomocą edytora Vi, który jest bardzo potężnym, ale równie skomplikowanym narzędziem dla początkujących. Aby dowiedzieć się, jak korzystać z tego edytora tekstu, zalecamy przeczytanie naszego poradnika Jak używać Vima.

Aby rozpocząć edycję pliku crontab, po wykonaniu polecenia crontab -e, naciśnij klawisz "i", a następnie wprowadź instrukcje dla swoich zadań. Na koniec naciśnij ESC, a następnie wpisz „: wq”, aby zapisać zmiany i zakończyć edycję pliku.

Ograniczenie dostępu do Crontab

Jak wyjaśniono powyżej, każdy użytkownik w systemie może definiować własne zadania, ponieważ dla każdego z tych użytkowników istnieje dedykowany plik crontab.

Można jednak ustawić, dla których użytkowników ten typ operacji jest dozwolony, działając na plikach cron.allow i cron.deny, które odpowiednio reprezentują białą listę i czarną listę dostępu do Crona.

Aby zastosować tę politykę ograniczeń, najpierw dodaj wszystkich użytkowników do pliku cron.deny, a następnie zezwól każdemu użytkownikowi na indywidualny dostęp, wskazując jego nazwę w pliku cron.allow.

Aby odmówić dostępu do dostępu do tabeli tabeli crontab, wpisz:

$ sudo echo ALL >>/etc/cron.deny

Aby autoryzować użytkownika, wystarczy wpisać:

$ sudo echo nazwa_uzytkownika >>/etc/cron.allow

Uwaga: Zastąp pole „nazwa_uzytkownika” nazwą użytkownika, który ma zostać autoryzowany.

Użytkownik z uprawnieniami administratora może edytować plik crontab innego użytkownika w systemie. Aby dokonać tego typu zmiany, uruchom polecenie:

$ sudo crontab -u nazwa_uzytkownika -e

Uwaga: Zastąp pole „nazwa_uzytkownika” nazwą użytkownika, którego plik crontab chcesz edytować.

Jeśli użytkownik, którego plik crontab, który próbujesz edytować, znajduje się w pliku cron.deny, ale nie został dodany do pliku cron.allow, pojawi się komunikat o błędzie, który ostrzega, że użytkownik nie może używać Cron.

Skróty Cron

Demon Cron ma kilka skrótów, które mogą uprościć definicję zadań.

W szczególności istnieją słowa (po których następuje symbol „@”), które mają precyzyjne znaczenie i dzięki temu przyspieszają pisanie zleceń, ponieważ można ich używać w składni zamiast pięciokolumnowej specyfikacji daty. Skróty Crona są następujące:

  • @hourly: wykonuje polecenie na początku każdej godziny. Jest równoważne z „0 * * * *”
  • @daily: wykonuje polecenie codziennie o północy. Odpowiada „0 0 * * *”
  • @weekly: wykonuje polecenie co tydzień o północy w niedzielę. Odpowiada „0 0 * * 0”
  • @monthly: wykonuje polecenie co miesiąc o północy pierwszego dnia miesiąca. Odpowiada „0 0 1 * *”
  • @yearly: wykonuje polecenie każdego roku o północy 1 stycznia. Odpowiada „0 0 1 1 *”
  • @reboot: wykonuje polecenie po każdym ponownym uruchomieniu systemu.

Podsumowanie

Jeśli jesteś administratorem systemu i zarządzasz jednym lub kilkoma serwerami, Cron jest zdecydowanie bardzo przydatnym narzędziem w codziennym życiu. Dzięki temu przewodnikowi nauczyłeś się planować operacje w Crontab w określonym dniu i czasie.

Cron może być używany na wiele różnych sposobów. Na przykład, jeśli potrzebujesz automatycznych kopii zapasowych na zarządzanym komputerze, Cron może być dobrą alternatywą dla innych systemów, jeśli ręcznie zdefiniujesz zadania kopiowania i synchronizacji