Crontab w Linuksie – z przykładami i narzędziami w czasie rzeczywistym

Zbadajmy crontab, jego polecenia i różne operacje związane z Crontab.

Dowiemy się, jak planować zadania za pomocą narzędzia cron, a na koniec omówimy również niektóre narzędzia online, które pomagają nam w formatowaniu i testowaniu poleceń cron.

Początek

Crontab oznacza „tablicę cron”. Słowo cron zostało zaczerpnięte z greckiego słowa Chronos oznaczającego czas. Crontab to proces demona systemowego, który automatycznie wykona niektóre zadania i zadania zgodnie z zaplanowanym czasem.

Przypadków użycia

Crontab jest przydatny do wykonywania różnych operacji, takich jak obsługa automatycznych kopii zapasowych, obracanie plików dziennika, synchronizowanie plików między zdalnymi maszynami i czyszczenie folderów tymczasowych itp. Crontab może być używany do każdego rodzaju pracy, ale staje się szczególnie przydatny, gdy zaczynamy zajmować się rodzaj pracy związanej z administrowaniem systemem.

Korzystając z crona, administrator może zaplanować uruchomienie zadania o określonej godzinie i dniu.

Zobaczmy więc, jak możemy to skonfigurować.

Składnia Crontab

Aby wykonać listę poleceń, narzędzie cron odczytuje pliki konfiguracyjne. Aby zinterpretować wiersze w tabelach konfiguracyjnych crontab, postępuj zgodnie ze składnią Crontab. Crontab ma sześć pól, a pierwsze pięć (1-5) pól określa datę i czas wykonania. Ostatnie pole, tj. 6, może być nazwą użytkownika i/lub zadaniem /job/command/skrypt do wykonania.

* * * * * POLECENIE/SKRYPTY DO WYKONANIA NAZWA_UŻYTKOWNIKA

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ Dzień tygodnia (0 – 6) (0 to niedziela lub użyj nazw)
│ │ │ |____________ Miesiąc (1 – 12),* oznacza co miesiąc
│ │ |______________ Dzień miesiąca (1 – 31),* oznacza każdy dzień
│ |________________ Godzina (0 – 23),* oznacza co godzinę
|___________________ Minuta (0 – 59), * oznacza co minutę

Uwagi:

  • Gwiazdka
  • służy do dopasowywania wszystkich możliwych wartości pola. Na przykład gwiazdka użyta w polu godzina byłaby równoważna co godzinę, a gwiazdka w polu miesiąca byłaby równoważna co miesiąc.

nazwa użytkownika jest opcjonalna (dostępna tylko wtedy, gdy jest to systemowy plik crontab)

Przykłady:

Rozumiemy powyższą składnię z kilkoma przykładami

0 5 * * * /scripts/job.sh

1. Zaplanuj uruchomienie crona codziennie o 5 rano

0 6,18 * * * /scripts/job.sh

2. Zaplanuj uruchomienie crona dwa razy dziennie o 6:00 i 18:00

* * * * * /scripts/job.sh

3. Zaplanuj uruchamianie crona co minutę

0 19 * * mon /scripts/job.sh

4. Zaplanuj uruchomienie crona w każdy poniedziałek o 19:00.

*/10 * * * * /scripts/job.sh

5. Zaplanuj uruchamianie crona co 15 minut.

* * * feb,jun,oct * /script/job.sh

6. Zaplanuj uruchomienie crona w wybranych miesiącach

25 7 4 3 * /home/script/backup.sh

7. Uruchom skrypt powłoki /home/script/backup.sh 4 marca o 7:25

8. Zaplanuj uruchamianie crona co 30 sekund

  • Ponieważ nie mamy kontroli nad sekundami w Crontab, ale możemy to osiągnąć poprzez poniższy dwuetapowy proces.
* * * * * /home/scripts/script.sh
  • Zaplanujmy najpierw zadanie uruchamiane co minutę.
* * * * * sleep 30; /home/scripts/script.sh

Teraz użyjmy polecenia sleep, aby wstrzymać wykonanie na 30 sekund.

Powyższe zadanie zatrzyma wykonywanie na 30 sekund i zostanie wznowione.

Rodzaj plików konfiguracyjnych Crona

Istnieją dwa typy plików konfiguracyjnych Crona:

Crontab systemu UNIX/Linux

Wymaga to uprawnień administratora, ponieważ zwykle jest używany do usług systemowych i zadań krytycznych. Szóste pole (w powyższym opisie składni) to nazwa użytkownika, dla którego polecenie ma zostać uruchomione. Daje systemowi crontab możliwość uruchamiania poleceń jako dowolny użytkownik.

Crontab użytkownika

Użytkownik może również zainstalować własne zadania cron za pomocą polecenia crontab. Tutaj również szóste pole (w powyższym opisie składni) to polecenie do uruchomienia, a wszystkie polecenia są uruchamiane jako użytkownik, który utworzył crontab. Każdy użytkownik może mieć swój własny plik crontab i chociaż są to pliki w /var/spool/cron/crontabs, nie są przeznaczone do bezpośredniej edycji. Musimy użyć polecenia crontab do edycji lub konfiguracji własnych zadań crona.

Jak to działa? Usługa cron (demon) działa w tle i stale sprawdza (co minutę) plik /etc/crontab i katalogi /etc/cron.*/. Sprawdza również katalog /var/spool/cron/. Polecenia są wykonywane przez cron

gdy pola minut, godziny i miesiąca są zgodne z bieżącym czasem, a co najmniej jedno z dwudniowych pól (dzień miesiąca lub dzień tygodnia) jest zgodne z bieżącym dniem.

Podstawowe polecenia

Wymienianie istniejących zadań Cron

crontab -l

Możemy wyświetlić listę wszystkich zadań Crona bez otwierania pliku konfiguracyjnego crontab za pomocą poniższego polecenia

[[email protected] ~]# crontab -l
no crontab for newsblog.pl
[[email protected] ~]#

Jeśli nie ma istniejącego zadania, zwróci dane wyjściowe jako

[[email protected] ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[[email protected] ~]#

Jeśli użytkownik dodał już niektóre zadania, zostanie to wyświetlone w następujący sposób.

Tabela crona jest specyficzna dla użytkownika, co oznacza, że ​​musisz być zalogowany z określonym użytkownikiem, aby zobaczyć listę tabeli crona.

Lista Cron dla konkretnego użytkownika

Aby wyświetlić listę zaplanowanych zadań innego użytkownika, użyj opcji -u (Użytkownik) i -l (Lista).

crontab -u inna_nazwa_użytkownika -l

Przykład: crontab -u newsblog.pl -l

Dodaj/zmodyfikuj wpisy Crontab

Aby edytować wpis crontab, możemy użyć opcji -e, jak pokazano poniżej.

crontab -e

Powyższe polecenie otworzy edytory vi, w których określisz szczegóły zadania i zapiszesz plik. Po zapisaniu możesz sprawdzić, czy cron jest skonfigurowany, czy nie za pomocą crontab -l.

Dodaj/zmodyfikuj wpisy Crontab dla konkretnego użytkownika

crontab -u another_username -e

Możemy edytować crontab dla innego użytkownika za pomocą poniższego polecenia

Przykład: crontab -u newsblog.pl -e

Usuń wpis Crontab

Użyj parametru -r z Crontab, aby usunąć kompletne zaplanowane zadania bez potwierdzenia z crontab

crontab -r

crontab -i -r
[[email protected] ~]# crontab -i -r
crontab: really delete newsblog.pl's crontab?

Jeśli chcesz potwierdzić przed usunięciem zaplanowanych zadań, użyj opcji -i z opcją -r, która wyświetli monit o potwierdzenie od użytkownika przed usunięciem jego crontab.

Specjalny ciąg Crontab

Poza powyższą składnią, którą omówiliśmy, możemy również użyć ośmiu specjalnych ciągów dostarczanych przez Crontab. Zaoszczędzi to nie tylko nasz czas, ale także poprawi czytelność.
Specjalny ciąg
Opis
@restart
Uruchom raz, po uruchomieniu.
@rocznie
Uruchamiany raz w roku, tj. 0 0 1 1 *
@rocznie
Tak samo jak @corocznie
@miesięczny
Uruchamiany raz w miesiącu tj. 0 0 1 * *
@co tydzień
Uruchamiaj raz w tygodniu, czyli 0 0 * * 0
@codzienny
Uruchom raz dziennie, czyli 0 0 * * *
@środek nocy
Tak samo jak @daily
@cogodzinny

Uruchom raz na godzinę, czyli 0 * * * *

Przykłady znaków specjalnych Crontab

1. Crontab do planowania zadań w ujęciu rocznym

@corocznie /scripts/greeting.sh

Możemy wykonać powyższe w celu wysłania pozdrowienia noworocznego, będzie ono wykonywane w pierwszej minucie każdego roku.

2. Crontab, aby zaplanować zadania do wykonania co miesiąc.

@miesięcznie /scripts/cleanup.sh

Możemy wykonać powyższy, aby wykonać niektóre czynności porządkowe na początku każdego miesiąca.

Podobnie możemy użyć innego specjalnego ciągu Crontab do celów tygodniowych, dziennych i godzinowych.

Katalog Crona

  • Administrator systemu może użyć ogólnosystemowego harmonogramu crona, który znajduje się we wstępnie zdefiniowanym katalogu crona, jak pokazano poniżej
  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.miesięcznie

/etc/cron.weekly

Przykłady Crontab w czasie rzeczywistym

Omówmy kilka przykładów czasu rzeczywistego, z których zwykle korzystają administratorzy systemu lub specjaliści IT.

Usuń puste pliki i katalog

45 0 * * * newsblog.pl znajdź /tmp -typ f -pusty -usuń

Powyższe wyrażenie cron odnajdzie puste pliki i katalog z katalogu /tmp i usunie je. To zadanie będzie uruchamiane codziennie o godzinie 12.45. Aby wykonać tę pracę, musimy podać nazwę użytkownika. W powyższym przykładzie użytkownik newsblog.pl wykonuje operację zadania cron.

Wykonuj wiele zadań za pomocą jednego crona

* * * * * /home/scripts/backup.sh; /home/skrypty/scritp.sh

Wiele zadań/zadań można oddzielić za pomocą średnika(;) i przypisać do pojedynczego wyrażenia crona.

Narzędzia do formatowania i testowania Cron

Do tej pory omawialiśmy polecenia i składnię crontab, aby zaplanować zadanie. Ale co, jeśli nie jesteś administratorem systemu, a Twoim zadaniem nie jest regularne konfigurowanie Crona, może nie być możliwe zapamiętanie składni i otwiera miejsce na błędy. Nie martw się, mamy rozwiązanie tego problemu.

W Internecie dostępnych jest kilka narzędzi do formatowania Crona.

# 1. Generator zadań Cron Generator zadań Cron

jest bardzo przyjaznym dla użytkownika graficznym interfejsem użytkownika, w którym można określić minuty, dni i ścieżkę skryptu, aby wygenerować crontab.

Weźmy przykład czasu rzeczywistego, w którym muszę wykonać /home/processMonitor.sh co 5 minut od poniedziałku do piątku.

Tak więc mam poniższą składnię Crona, którą mogę umieścić w moim crontab, wykonując
crontab –e

0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Easycron Easycron

jest przydatnym internetowym harmonogramem zadań cron. Możemy stworzyć zadanie cron, podając adres URL do wywołania, możemy ustawić czas, w którym ma zostać wykonane. Możemy również określić wyrażenie cron lub dodać je ręcznie z postaci opisowej. Co ważne, możemy opcjonalnie użyć podstawowego uwierzytelniania HTTP dla małej warstwy bezpieczeństwa.

Nie tylko to, ale Easycron może być również używany do innych celów, takich jak standardowe wyrażenie Cron, dzienniki wykonywania zadań Cron, powiadomienia e-mail, oddzielne dzienniki awarii itp.

# 3. Generator Crontab Generator Crontab

to kolejne przydatne narzędzie do generowania crontab, a za pomocą tego narzędzia możesz również dodać, jeśli chcesz zapisać dane wyjściowe cron do pliku lub wysłać je na e-mail.

# 4. Guru Crontab Guru Crontab

to prosty edytor wyrażeń harmonogramu crona online. Ponadto zapewnia użyteczny sposób monitorowania twojego cronjob. Wszystko, co musimy zrobić, to skopiować dostarczone polecenie i dołączyć na końcu definicji crontab. W przypadku, gdy zadanie crona nie powiedzie się lub nawet się nie rozpocznie, otrzymasz wiadomość e-mail z ostrzeżeniem.

W poniższym przykładzie zadanie zostanie wykonane o 04:05, codziennie, co miesiąc i co tydzień.

# 5. Tester CRON Tester CRON

pozwala nam przetestować definicje czasu/daty crona. Może zaistnieć sytuacja, w której będziemy musieli zdekodować istniejącą składnię crona w celu rozwiązania problemu lub po prostu wykonać test.

W tym celu możemy skorzystać z tego narzędzia. Wszystko, co musimy zrobić, to skopiować i wkleić nasze wyrażenie crona w polu definicji crona, a następnie wybrać liczbę iteracji i kliknąć Test, aby zobaczyć różne daty, w których będzie działać.

Sprawdźmy jedno z naszych wyrażeń cron 4 3 */2 * *, które powinno być uruchamiane o 03:04 (AM) co dwa dni. Zweryfikujmy to za pomocą testera cron.

Wniosek Mam nadzieję, że powyższe pomoże ci lepiej zrozumieć Crontab i skonfigurować zadania crona. Planowanie zadań przez Crona jest jednym z wielu zadań wykonywanych przez administratora systemu Linux. Jeśli jesteś zainteresowany nauką zaawansowanych umiejętności, sprawdź tokurs

.