Podręcznik Crontab – Planowanie zadań w systemie Linux

Wykonywanie w kółko tych samych zadań, czy to codziennie, co tydzień, czy co miesiąc, jest zadaniem, które z czasem męczy i degeneruje, w zależności od jego złożoności, w której je pomijamy. Rozwiązaniem tego problemu jest jak największa automatyzacja. Tak jak Windows pozwala nam zautomatyzować niektóre zadania, Linux oferuje nam również tę opcję za pośrednictwem Crontab, ale nie wyłącznie.

Jeśli chcemy zautomatyzować działanie Linuksa, czy to wykonać kopię zapasową, wygenerować raporty, zmodyfikować konfigurację lub cokolwiek innego, rozwiązaniem jest użycie Crontab w połączeniu z Cronem, ponieważ w przeciwieństwie do Windows potrzebujemy dwóch aplikacje min.

Podręcznik Crontaba

Co to jest Crontab?

Crontab to plik tekstowy, w którym tworzone są automatyzacje na podstawie szeregu parametrów, plik tekstowy, który jest czytane przez Crona . Obie aplikacje są dostępne natywnie w większości najpopularniejszych dystrybucji Linuksa, więc nie jest konieczne instalowanie żadnego repozytorium na naszym komputerze, aby móc z nich korzystać.

Crontab oferuje nam serię skryptów, po jednym na linię, co pozwala nam dostosować dokładny czas, w którym chcemy do wykonania jednego lub wielu zadań i ich powtarzalność w czasie. W rzeczywistości jego nazwa pochodzi od greckiego słowa Cronos , co oznacza czas. Każdy skrypt zawiera informację o dokładnej dacie, w której powinien zostać wykonany, która to data jest oznaczona ciągiem cyfr. Dla próbki, przycisk. Poniższy skrypt będzie uruchamiał nfsfind w każdą niedzielę o 5:30 rano

30 5 * * 0 /usr/lib/fs/nfs/nfsfind

Pierwsze dwie cyfry oznaczają godzinę, w której polecenie zostanie wykonane, pierwsza liczba to minuty, a druga godziny. Format czasu używany przez Crontab to 24 godziny, więc jeśli chcemy wykonać zadanie o 5 po południu, byłaby to liczba 17. Gwiazdki reprezentują wszystkie wartości, a liczba 0 odpowiada niedzielom.

Nie myl Cron z Crontab

Podczas gdy Crontab pozwala nam przeprowadzić nasz system automatyzacje , są one wykonywane, choć nie wyłącznie, za pomocą aplikacji Cron, aplikacji działającej w tle i wykonującej wszystkie zadania, które wcześniej skonfigurowaliśmy w Crontab. Ta aplikacja wykorzystuje czas naszego systemu do ich wykonania, dlatego ważne jest, jeśli korzystamy z maszyny wirtualnej, aby zarówno czas maszyny-gościa, jak i czasu naszego komputera były zawsze takie same, ponieważ w przeciwnym razie zaprogramowany czas nie będzie prawidłowy.

Cron co minutę odczytuje zawartość pliku Crontab, dzięki czemu w dowolnym momencie możemy go edytować, aby wykonać zadania, które chcemy wykonać w tej samej sesji, bez konieczności zmuszania aplikacji do ponownego odczytania jego zawartości w celu znalezienia nowych skryptów do uruchomienia.

Nie wszyscy użytkownicy mają możliwość tworzenia plików Crontab w celu automatyzacji zadań systemowych. Administrator systemu ma możliwość zezwolenia lub odrzucenia tej opcji poprzez odpowiednio plik cron.allow lub cron.den, pliki znajdujące się w /etc/cron.do /etc/ w zależności od posiadanej wersji dystrybucji Linuksa. zainstalowany na naszym komputerze.

Jak zautomatyzować zadania w Linuksie

Jak wspomnieliśmy powyżej, skrypty Crontab zaczynają się od daty, w której chcemy je wykonać, po której następuje polecenie. Składnia Crontab jest następująca.

Zarządzanie harmonogramem

minuto hora día-del-mes mes día-de-la-semana ruta-comandos

  • Minuta, może to być od 0 do 59
  • Czas, jak wspomnieliśmy, Crontab używa czasu 24-godzinnego, więc zakres liczb wynosi od 0 do 23.
  • Dzień miesiąca w tym parametrze nie ma wiele tajemnic, ponieważ wynosi od 1 do 31.
  • Miesiąc, od 1 do 12
    • Styczeń 1
    • luty 2
    • marzec 3
    • Kwiecień 4
    • Maj 5
    • Czerwiec 6
    • Lipiec 7
    • Sierpień 8
    • Wrzesień 9
    • Październik 10
    • Listopad 11
    • Grudzień 12.
  • Dzień tygodnia, od 0 do 6, niedziela to numer 0, chociaż niektóre wersje Crontab pozwalają również na użycie numeru 7. W ten sposób kod dni tygodnia to
    • 0 niedziela
    • 1 poniedziałek
    • 2 wtorek
    • 3 środa
    • 4 czwartek
    • 5 piątek
    • 6 sobota

Ale dodatkowo możemy również użyć gwiazdki (*), aby określić wszystkie możliwe wartości zmiennej. Jeśli chcemy ustalić kilka wartości, możemy to zrobić za pomocą przecinka (,) lub zakresu wartości oddzielając je łącznikiem (-). Możemy również ustawić różne kroki za pomocą „/”.

Jeśli nadal nie jest to bardzo jasne, to pokazujemy kody czasowe, których możemy używać do okresowego wykonywania zadań w zależności od ich częstotliwości

  • 0 * * * * Używając kodu czasowego, skrypt będzie wykonywany co godzinę o pełnej godzinie.
  • 0 0 * * * Codziennie skrypt zostanie wykonany tylko raz
  • 0 0 * * 0 Skrypt jest uruchamiany raz w tygodniu
  • 0 0 1 * * Będzie wykonywane raz w miesiącu
  • 0 0 1 1 * Skrypt będzie wykonywany raz w roku

Gdy już wiemy, jak działa planowanie zadań w Crontab, pierwszą rzeczą, którą zamierzamy zrobić, jest utworzenie pliku, w którym będziemy tworzyć wszystkie procesy, które chcemy zautomatyzować za pomocą następującego polecenia

crontab nombre-archivo

Jeśli nie chcemy tworzyć nowego, lub już go stworzyliśmy i chcemy go edytować, używamy tego polecenia

crontab -e

Jeśli chcemy usunąć utworzony plik Crontab

crontab -d

Za pomocą następującego polecenia możemy wyświetlić listę wszystkich zadań zawartych w pliku Crontab

crontab -d

Administratorzy systemu mogą ograniczyć korzystanie z automatyzacji systemu, edytując pliki cron.allow lub cron.den, pliki znajdujące się w /etc/cron.d/ lub /etc/, jeśli wcześniej nie zmieniliśmy ich lokalizacji.

automatyzować zadania

Do edycji utworzonego przez nas pliku Crontab użyjemy edytora tekstu zawartego we wszystkich dystrybucjach Linuksa, chociaż możemy go również edytować bezpośrednio z poziomu Crontab, dodając zmienną -e.

nano nombrearchivo

Wprowadzamy kod numeryczny opatrzony gwiazdkami i skrypt, który chcemy wykonać. Następnie musimy dać Cronowi uprawnienia do jego uruchomienia, w przeciwnym razie nie będzie wiedział o jego istnieniu i nigdy nie będzie mógł go uruchomić. Aby to zrobić, użyjemy polecenia

chmod ugo+x nombrearchivo

Początkowo używanie Crontaba do automatyzacji zadań nie wydaje się wcale łatwe i przypomina (prawie powszechną) potrzebę Linuksa do korzystania z wiersza poleceń praktycznie do wszystkiego, ograniczając w ten sposób większą liczbę użytkowników do przyjęcia Linuksa jako systemu operacyjnego na dzień- podstawie dnia dzisiejszego. .

Harmonogram zadań systemu Windows wykorzystuje interfejs graficzny, który nie jest łatwy w obsłudze bez niezbędnej wiedzy, jednak jest znacznie bardziej intuicyjny niż ten oferowany przez Linuksa za pośrednictwem wiersza poleceń.

Przykład działania Crontab i Cron

Pierwszą rzeczą, którą musimy zrobić, aby zautomatyzować zadania w systemie Linux, jest utworzenie pliku, w którym będziemy umieszczać wszystkie polecenia, które chcemy wykonać na komputerze w momencie konfiguracji. W tym przykładzie utworzymy plik „testowy”, który będzie odpowiedzialny za usunięcie wszystkich plików i pustych folderów znalezionych w katalogu tmp. Aby to zrobić, wprowadzimy następujące polecenie.

crontab prueba

Następnie musimy wpisać komendę (lub komendy rozdzielając je średnikami „;” bez cudzysłowów). W tym przykładzie użyjemy Crontab do usunięcia plików w folderze tmp.

find /tmp -type f -empty -delete

Następnie edytujemy plik, aby dodać harmonogram, czyli gdy chcemy, aby zadania, które wpisaliśmy w pliku zostały wykonane.

crontab -e

Aby był wykonywany codziennie o 10 rano, musimy dodać 0 10 * * * przed skryptem, pozostawiając linię w następujący sposób

0 10 * * * find /tmp -type f -empty -delete

Jeśli chcemy, aby został wykonany w innym czasie, wystarczy zmodyfikować liczbę 10 na godzinę (w formacie 24-godzinnym), w której chcemy, aby został wykonany. Możemy również skorzystać z kody czasowe którą pokazaliśmy w sekcji Zarządzanie programowaniem, aby ją skonfigurować. Na koniec używamy następującego polecenia, aby Cron mógł wykonać utworzony przez nas plik automatyzacji.

[code]chmod ugo+x prueba

Alternatywy dla Crona

Jak wspomnieliśmy w poprzednich sekcjach, Cron jest odpowiedzialny za wykonywanie poleceń, które wcześniej wprowadziliśmy w Crontab. Cron to doskonałe narzędzie dla zespołów, które działają 24 godziny na dobę, choć możemy go również dostosować do naszego harmonogramu pracy, nawet jeśli zabiera to zespołowi zasoby podczas wykonywania zadań. Jeśli szukamy prostszych opcji dla Crona, pokażemy Ci jedne z najlepszych alternatyw.

anakron

Anacron pozwala nam zaplanować automatyczną realizację zadań na dzień, tydzień lub miesiąc, w dowolnym momencie. Jeśli komputer jest wyłączony, przy następnym uruchomieniu komputera zostanie wykonane zadanie, które wcześniej wprowadziliśmy w Crontab. W przypadku Crona, jeśli komputer zostanie wyłączony w określonym dniu, zadanie nie zostanie wykonane, gdy włączymy komputer. Anacron jest dostępny w większości dystrybucji Linuksa i możemy go zainstalować na komputerze za pomocą następującego polecenia.

sudo apt install anacron

Kroniki

Cronie oferuje nam znacznie pełniejsze doświadczenie niż Cron i mały zestaw aplikacji (wśród których znajduje się Anacron), dzięki którym możemy bardzo szybko i łatwo programować przepływy pracy za pośrednictwem Crontab. W przeciwieństwie do Anacron, aby zainstalować Cronie, nie jest on dostępny w repozytoriach Linuksa, więc musimy odwiedzić jego stronę internetową na GitHub aby go pobrać, lub użyj następującego polecenia.

wget https://github.com/cronie-crond/cronie/releases/download/cronie-1.6.1/cronie-1.6.1.tar.gz