Przewodnik dla początkujących dotyczący korzystania z crona w systemie Linux

Cron Guide 00 Featured Image

Cron to proste narzędzie UNIX, które zarządza i planuje wykonywanie poleceń na twoim komputerze. Został po raz pierwszy opracowany w 1987 roku przez Paula Vixie i od tego czasu stał się nieocenionym narzędziem w systemach operacyjnych opartych na Linuksie zarówno dla administratorów, jak i użytkowników.

Obecnie istnieje wiele implementacji i przeróbek crona, które możesz łatwo zainstalować w swoim systemie Linux. Pomimo różnic, wszystkie te programy mają ten sam rodowód Vixie Cron.

W związku z tym ten artykuł ma na celu przedstawienie podstawowego przeglądu tego, jak działa oryginalny cron Vixie, jego składni i sposobu, w jaki można go używać do planowania zadań w systemie Linux.

Jak działa Cron?

Cron to niezwykle proste narzędzie UNIX. Działa w dwóch częściach. Cron najpierw działa jako proces w tle, który rozpoczyna się po pierwszym uruchomieniu systemu.

Stamtąd co minutę odczytuje określony plik. Ten plik zawiera listę poleceń, która z kolei składa się z kodu czasowego i ścieżki do pliku dla każdego skryptu lub programu, który chcesz uruchomić.

Poradnik Cron 03 Przykładowy Crontab

Takie podejście pozwala cronowi na dużą elastyczność w dużych systemach. Na przykład nowoczesne implementacje crona, takie jak Cronie, uruchamiają tylko jedną instancję crona, nawet jeśli ta maszyna obsługuje wielu użytkowników.

Poradnik Cron 04 Lokalny Crontab

Cronie umożliwia to, udostępniając lokalne crontab dla każdego użytkownika zainstalowanego w systemie. Jako taki, cron musi tylko wiedzieć, kto jest właścicielem crontab, poziom uprawnień tego użytkownika i polecenia wewnątrz crontab.

To nie tylko sprawia, że ​​system jest bardziej wydajny, ale także bezpieczniejszy, zmniejszając liczbę uprzywilejowanych programów działających w pamięci.

Crontab: Serce Cron

Każda implementacja crona używa jakiejś formy crontab. Jest to prosty plik tekstowy, który zawiera wszystkie polecenia, które cron uruchomi dla tego konkretnego użytkownika. Jak opisano powyżej, każdy użytkownik w systemie ma swoją własną tabelę crontab. Mogą przeglądać, uruchamiając następujące polecenie:

Poradnik Cron 05 Lista Crontab

Spowoduje to wydrukowanie zawartości crontab bieżącego użytkownika na standardowe wyjście. Może to być niezwykle pomocne, jeśli chcesz szybko zobaczyć, jakie polecenia cron uruchamia dla tego użytkownika.

Aby go edytować, musisz uruchomić polecenie:

To powie cronowi, aby uruchomić domyślny edytor tekstu i załadować do niego plik crontab. Spowoduje to edycję pliku crontab.

Przewodnik po Cron 06 Edytor Crontab

Składnia Crontab

Składnia pliku crontab jest niezwykle prosta. Pojedyncza linia w tym pliku wskaże odpowiednie polecenie, które należy uruchomić dla tego konkretnego użytkownika. Ogólna forma polecenia crontab wygląda mniej więcej tak:

Przedział czasowy to pięciocyfrowe pole, w którym możesz powiedzieć cronowi, jak często chcesz uruchamiać polecenie. Jest to podstawowa funkcja każdej implementacji crona i pozwala być zarówno konkretnym, jak i elastycznym w sposobie, w jaki cron traktuje powtarzające się zadania.

  • m = minuta między 0 a 59
  • h = godzina między 0 a 23
  • d = dzień miesiąca między 1 a 31
  • pon = miesiąc między 1 a 12
  • dow = dzień tygodnia od 0 do 6. Zero to niedziela.
Czytać  Skonfiguruj lokalny serwer WWW w systemach Windows, Mac i Linux

The flags pole to zestaw opcji, które modyfikują zachowanie crona dla pojedynczego polecenia. Na przykład możesz dołączyć -n możliwość zatrzymania crona przed wysyłaniem poczty systemowej.

The command pole jest poleceniem, które cron będzie uruchamiał w określonych odstępach czasu. Może to być albo skrypt powłoki, który napisałeś, albo ścieżka programu z flagami.

Poradnik Cron 07 Linia Crontab

Wiedząc o tym, możesz użyć ich wszystkich razem w jednej linii crontab, aby utworzyć określone przedziały czasowe dla swoich zadań. Na przykład mogę uruchomić skrypt na moim systemie Ubuntu co 24 lipca o 2:30 nad ranem, pisząc następującą linię crontab:

Cron Guide 08 Bardzo specyficzny Crontab

Notatka: Zaleca się uruchamianie zadania crona w „niezwykłej” liczbie minut (11, 27 34, itd.), aby uniknąć nakładania się różnych zadań crona na siebie.

Krótkie kody

Crontab pozwala na użycie krótkich kodów, aby ułatwić czytanie wpisów w cron.

  • @reboot – Uruchom raz, przy starcie
  • @yearly – Uruchom raz w roku, „0 0 1 1 *”.
  • @annually – to samo co @yearly
  • @monthly – Uruchom raz w miesiącu, „0 0 1 * *”
  • @weekly – Uruchom raz w tygodniu, „0 0 * * 0”
  • @daily – Biegaj raz dziennie, „0 0 * * *”
  • @midnight – to samo co @daily
  • @hourly – Biegaj raz na godzinę, „0 * * * *”

Na przykład:

The @reboot shortcode umożliwia tworzenie skryptów uruchamianych przy starcie:

Może to być niezwykle pomocne, jeśli chcesz stworzyć sposób na zapewnienie, że polecenia będą uruchamiane natychmiast po włączeniu komputera.

Notatka: W zależności od konfiguracji systemu, @reboot shortcode może, ale nie musi działać zgodnie z przeznaczeniem w twoim systemie.

Crontab systemu

Kolejną genialną cechą crona jest to, że może zarządzać powtarzającymi się zadaniami systemowymi, ponieważ można również tworzyć pliki root crontab. Może to być niezwykle pomocne, jeśli chcesz zautomatyzować konserwację i aktualizacje systemu.

Aby utworzyć crontab root, wystarczy użyć sudo za pomocą polecenia lub zaloguj się na swoje konto root:

Przewodnik po Cron 10 Główny edytor Crontab

Systemowy plik crontab w dużej mierze ma ten sam format, co plik crontab użytkownika. Jednak kluczową różnicą między nimi jest to, że crontab root umożliwia uruchamianie poleceń jako dowolny użytkownik w systemie:

Wiedząc o tym, możesz użyć tego do tworzenia powtarzających się poleceń zarówno na poziomie użytkownika, jak i na poziomie głównym w ramach tej samej tablicy crontab:

Robienie tego w ten sposób pozwala mi zachować uprawnienia moich plików, jednocześnie mając jedno miejsce, w którym mogę edytować polecenia, które chcę uruchomić.

Przewodnik po Cron 11 Specyficzny format Crontab

Edycja wpisów crona jako inny użytkownik

Jeśli zamiast edytować crontab jako użytkownik root, chcesz zaplanować zadanie cron jako inny użytkownik, jest to również możliwe za pomocą -u flaga.

Na przykład, aby uruchomić zadanie cron jako użytkownik „www-data”, użyj następującego polecenia:

Przeglądanie aktywności crona

Chociaż jesteś teraz skonfigurowany do uruchamiania określonych poleceń lub skryptów, możesz chcieć się upewnić, że zostały uruchomione. Wbudowany w crona polega na tym, że po uruchomieniu polecenia wyśle ​​​​e-mail do właściciela crona. Można to zmienić za pomocą zmiennej „MAILTO”.

cron-mailto-zmienna

Dodawanie MAILTO=youremail@yourdomain.com wyśle ​​​​wszystkie raporty z zadań crona na określony adres e-mail. Tę zmienną można zazwyczaj znaleźć na samej górze ekranu edycji crontab. Jeśli jednak jej tam nie ma, możesz dodać zmienną i będzie działać zgodnie z oczekiwaniami.

Czytać  Jak zainstalować OpenRazer w systemie Linux

Wiele adresów e-mail można oddzielić przecinkami. Jeśli potrzebujesz innego polecenia wysłanego pocztą e-mail w innym miejscu, możesz dodać polecenie MAILTO bezpośrednio nad poleceniem. Polecenia po tym mailto zostaną wysłane na nowy adres. Jeśli odejdziesz MAILTO= puste, powiadomienia zostaną wysłane do właściciela wpisu crona.

Jeśli nie chcesz otrzymywać żadnych wiadomości e-mail, możesz również sprawdzić logi crona. W większości systemów dostęp do dzienników crona będzie wymagał uprawnień administratora. Dziennik crona można znaleźć w „/var/log”. Plik cron lub syslog wyświetli dziennik wykonanych wpisów cron.

Często Zadawane Pytania

Dlaczego moje polecenie cron działa co minutę, a nie raz na godzinę?

Jest to jedna z najczęstszych pułapek podczas zarządzania crontabami. Domyślnie dodanie wartości gwiazdki w kodzie czasu oznacza, że ​​będzie on uruchamiany dla każdej możliwej instancji dla tej wartości. Na przykład wartość 0 12 * * * powie cronowi, że chcesz uruchamiać polecenie raz dziennie do 12:00.

Jednak większość początkujących często pisze ten sam kod czasowy, co * 12 * * *. Zapisanie go w ten sposób będzie oznaczać, że polecenie będzie uruchamiane raz na minutę od 12:00 do 12:59. W związku z tym dobrą praktyką jest wpisanie 0 w polu minut, aby upewnić się, że polecenie zostanie uruchomione tylko raz.

Czy są jakieś inne opcje, z których mogę korzystać z cronem?

Oprócz -n oraz MAILTO zmiennych, możesz również użyć -s polecenie, aby powiedzieć programowi, aby był surowy przy wykonywaniu poleceń. Użycie tej opcji zmusi crona do skupienia się tylko na bieżącym poleceniu, dopóki się nie skończy. Może to być niezwykle pomocne, jeśli twój komputer używa zestawu poleceń, które muszą działać w określonej kolejności.

Możesz także użyć SHELL zmienna, aby crona używała innej powłoki do swoich poleceń. Na przykład: SHELL=/bin/ksh

Kredyt obrazu: Unsplash

Czy ten artykuł jest przydatny?

Zapisz się do naszego newslettera!

Nasze najnowsze samouczki dostarczane prosto do Twojej skrzynki odbiorczej