Crontab w systemie Linux: PRZYKŁADY planowania zadań

⚡ Inteligentne podsumowanie

Crontab w systemie Linux planuje automatyczne uruchamianie poleceń o ustalonych porach, datach lub odstępach czasu za pomocą demona cron, umożliwiając administratorom automatyzację tworzenia kopii zapasowych, czyszczenia dzienników, powiadomień i rutynowej konserwacji systemu bez konieczności ręcznej interwencji.

  • ⏰ Demon cron: Proces cron działający w tle odczytuje pliki crontab i uruchamia każde zaplanowane zadanie dokładnie w określonej przez Ciebie chwili.
  • 🗂️. Format Crontab: Przed uruchomieniem polecenia znajduje się pięć pól czasu — minuta, godzina, dzień miesiąca, miesiąc i dzień tygodnia.
  • ✍️. Prace edycyjne: Użyj crontab -e, aby dodać lub zmienić zadania, crontab -l, aby je wyświetlić, lub crontab -r, aby je usunąć.
  • 🔁 Specjalne ciągi znaków: Skróty takie jak @reboot, @daily, @weekly i @hourly zastępują pięć pól czasu w typowych harmonogramach.
  • 📅 Przykłady praktyczne: Gotowe wpisy obejmują zadania wykonywane co pięć minut, konkretne dni tygodnia, uruchomienia miesięczne i zadania uruchamiane automatycznie.
  • 🤖 Pomoc AI: Asystenci AI i GitHub Copilot mogą generować i wyjaśniać wyrażenia cron w ciągu kilku sekund.

Crontab w harmonogramowaniu zadań w systemie Linux z przykładami

Crontab, skrót od cron table, to plik konfiguracyjny i polecenie, które dysk Linux Harmonogramowanie zadań. Poniższe sekcje wyjaśniają format pliku crontab, polecenia dodawania, wyświetlania i usuwania zadań, specjalne ciągi znaków @ oraz gotowe do użycia przykłady harmonogramowania.

Co to jest crontab?

Nazwa Cron pochodzi od greckiego słowa „Chronos”, oznaczającego czas. Jest to proces systemowy (demon), który automatycznie wykonuje zadania według ustalonego harmonogramu. Cron to zestaw poleceń służący do uruchamiania regularnych, zaplanowanych zadań. Crontab to skrót od „cron table” i umożliwia użycie harmonogramu zadań cron do wykonywania tych zadań.

Crontab to również nazwa programu służącego do edycji tego harmonogramu. Jest on sterowany przez plik crontab — plik konfiguracyjny, który zawiera listę poleceń powłoki, które mają być uruchamiane okresowo zgodnie z określonym harmonogramem.

Dlaczego warto korzystać z zadań Cron?

Oto główne powody korzystania z zadań cron w systemie Linux:

  • Wykonuje zaplanowane kopie zapasowe plików dziennika lub baz danych.
  • Automatycznie usuwa stare pliki dziennika.
  • Archiczyści i usuwa tabele bazy danych.
  • Wysyła powiadomienia e-mailem, np. newslettery lub przypomnienia o wygaśnięciu hasła.
  • Wykonuje regularne czyszczenie danych w pamięci podręcznej.
  • Automatyzuje powtarzalne zadania w systemach Unix i Linux.
  • Automatyzuje rutynową konserwację systemu.

Jak używać cron w systemie Linux?

Pakiet systemu Linux zawiera przydatny harmonogram zadań o nazwie crontab. Crontab jest popularny, ponieważ zadanie można zaplanować do uruchomienia z uprawnieniami użytkownika root, co ułatwia automatyczne wprowadzanie zmian w systemie. Wystarczy raz zmienić zadanie i poczekać, aż zostanie ono ponownie uruchomione zgodnie z harmonogramem.

Format Crontab w systemie Linux

Wpis crontab w systemie Linux składa się z sześciu pól. Pierwsze pięć pól definiuje czas i datę wykonania, a szóste pole zawiera polecenie do uruchomienia.

Składnia Crontaba:

[Minute] [hour] 
[Day_of_the_Month] 
[Month_of_the_Year] 
[Day_of_the_Week] 
[command]

Poniższy diagram mapuje każdą gwiazdkę w wpisie crontab na kontrolowane przez nią pole, od minuty do dnia tygodnia, a następnie podaje polecenie do wykonania.

Diagram formatu crontab w systemie Linux przedstawiający pięć pól czasu i poleceń

Pięć pól czasu akceptuje następujące wartości: minuta (0–59), godzina (0–23), dzień miesiąca (1–31), miesiąc (1–12 lub sty–gru) i dzień tygodnia (0–7, gdzie 0 i 7 oznaczają niedzielę). Każde pole można kontrolować za pomocą następujących znaków specjalnych:

  • Gwiazdka (*): Dopasowuje każdą możliwą wartość do danego pola.
  • Zdefiniuj zakres: Użyj myślnika, aby określić zakres, np. 1-10, 30-40, sty-mar lub pon-śr.
  • Zdefiniuj wiele zakresów: Użyj przecinków, aby połączyć zakresy, np. apr-jun,oct-dec.

Jak dodać/zmodyfikować Crontab

Użytkownicy mogą edytować własne zadania crontab za pomocą poniższego polecenia crontab. Opcja -u dotyczy pliku crontab konkretnego użytkownika, dlatego należy podać nazwę użytkownika, jak pokazano w poniższych przykładach:

$ crontab -u -e 

Powyższe polecenie otwiera osobistą konfigurację crontab dla Twojego systemu, którą możesz edytować w domyślnym edytorze tekstu.

Nie ma potrzeby restartowania crona; zmiany zostaną automatycznie uwzględnione. Aby wyświetlić bieżące zadania, użyj:

$ crontab -l

Aby usunąć zadania crontab, użyj następującego polecenia:

$ crontab -r

Aby dodać lub zaktualizować zadanie w crontab, użyj poniższego polecenia:

crontab -e

Aby edytować plik crontab innego użytkownika, podaj nazwę użytkownika za pomocą opcji -u:

crontab -u username -e

Jak wyświetlić listę Crontab

Aby wyświetlić wpisy crontab bieżącego użytkownika:

crontab -l

Aby wyświetlić wpisy crontab konkretnego użytkownika:

crontab -u username -l

Ważne przykłady Crontab

Oto kilka ważnych, gotowych do użycia przykładów harmonogramów crontab:

OPIS Command
Uruchamia różne zadania harmonogramowania. Poniższe polecenie jest wykonywane codziennie o 7:00 i 17:00.
0 7,17 * * * /scripts/script.sh
Wykonuje zadanie cron co 5 minut.
*/5* * * * *  /scripts/script.sh
Wykonuje zadanie co Monday o 5 rano. Jest to przydatne przy cotygodniowych zadaniach, takich jak czyszczenie systemu.
0 5 * * mon  /scripts/script.sh
Uruchamia skrypt co 3 minuty.
*/3 * * * * /scripts/monitor.sh
Planuje zadanie cron wykonywane w określonych miesiącach — w tym przypadku: lutym, czerwcu i wrześniu.
* * * feb,jun,sep *  /script/script.sh
Wykonywany w wybrane dni. Ten przykład uruchamia się każdego dnia. Monday i w środę o 5:XNUMX.
0 17 * * mon,wed  /script/script.sh
Umożliwia wykonywanie crona w pierwszą sobotę każdego miesiąca.
0 2 * * sat  [ $(date +%d) -le 06 ] && /script/script.sh
Uruchamia skrypt co 6 godzin, konfigurując go w sposób podany poniżej.
0 */6 * * * /scripts/script.sh
Planuje zadanie do wykonania dwa razy Monday i wtorek. Użyj następujących ustawień, aby to zrobić.
0 4,17 * * mon,tue /scripts/script.sh
Planuje wykonanie zadania cron co 15 sekund.
* * * * * /scripts/script.sh
* * * * *  sleep 15; /scripts/script.sh
Planuje zadania na rok. @yearly jest podobne do „0 0 1 1 *”. Zadanie jest uruchamiane raz w roku o północy 1 stycznia — przydatne przy składaniu życzeń noworocznych.
@yearly /scripts/script.sh 
Uruchamia zadania co miesiąc. @monthly jest podobne do „0 0 1 * *”. Zadanie jest uruchamiane o północy pierwszego dnia każdego miesiąca.
@monthly /scripts/script.sh
Wykonuje wiele zadań za pomocą jednego wpisu cron.
* * * * * /scripts/script.sh; /scripts/scrit2.sh
Planuje zadania co tydzień. @weekly jest podobne do „0 0 * * 0”. Uruchamia cotygodniowe zadania, takie jak czyszczenie systemu o północy w każdą niedzielę.
@weekly /bin/script.sh
Planuje zadania na każdy dzień. @daily jest podobne do „0 0 * * *”. Zadanie jest uruchamiane raz dziennie o północy.
@daily /scripts/script.sh
Uruchamia zadania co godzinę. @hourly jest podobne do „0 * * * *”. Zadanie jest uruchamiane na początku każdej godziny.
@hourly /scripts/script.sh
Uruchamia zadania przy ponownym uruchomieniu systemu. @reboot przydaje się w przypadku zadań, które system powinien uruchamiać przy starcie, umożliwiając automatyczne rozpoczęcie zadań w tle.
@reboot /scripts/script.sh

FAQ

Pliki crontab użytkownika są przechowywane w katalogu /var/spool/cron/ (lub /var/spool/cron/crontabs/ w systemie Debian i Ubuntu), podczas gdy harmonogram systemowy znajduje się w katalogach /etc/crontab i /etc/cron.d. Zawsze edytuj pliki crontab użytkowników za pomocą crontab -e, zamiast otwierać je bezpośrednio.

Cron uruchamia zadania tylko w ściśle zaplanowanym czasie i pomija je, jeśli komputer jest wyłączony. Anacron tracks pomija pominięte zadania i uruchamia je po ponownym uruchomieniu systemu, dlatego nadaje się do laptopów i komputerów stacjonarnych, które nie zawsze działają.

Cron korzysta z minimalnego środowiska, więc zazwyczaj przyczyną jest ograniczona ścieżka PATH. Używaj ścieżek bezwzględnych dla poleceń i skryptów, nadaj skryptowi status wykonywalności i przekieruj dane wyjściowe do pliku dziennika, aby rejestrować ewentualne błędy na potrzeby debugowania.

Dodaj >> /ścieżka/do/pliku/logu 2>&1 do polecenia, aby przechwycić standardowe wyjście i błędy do pliku. Alternatywnie, ustaw zmienną MAILTO na górze tabeli crontab, aby cron wysyłał dane wyjściowe każdego zadania na ten adres.

Pliki /etc/cron.allow i /etc/cron.deny kontrolują dostęp. Jeśli istnieje plik cron.allow, tylko użytkownicy wymienieni w nim mogą korzystać z crontab. Jeśli istnieje tylko plik cron.deny, każdy użytkownik z wyjątkiem wymienionych ma prawo planować zadania.

Plik crontab użytkownika utworzony poleceniem crontab -e zawiera pięć pól czasu, po których następuje polecenie. Plik systemowy /etc/crontab dodaje pole z nazwą użytkownika uruchamiającego zadanie, zawierające minutę, godzinę, dzień, miesiąc, dzień tygodnia, użytkownika, a następnie polecenie.

Tak. Narzędzia uczenia maszynowego mogą określać standardowe czasy wykonywania zadań i czasy ich ukończenia, a następnie sygnalizować anomalie, takie jak zadanie trwające zbyt długo, niepowodzenie bez powiadomienia lub nieterminowe wykonanie. Analiza logów AI grupuje również powiązane błędy, aby przyspieszyć prace nad ich pierwotną przyczyną.

Tak. Drugi pilot GitHub Potrafi generować wyrażenia cron z komentarza w języku potocznym, wyjaśniać działanie harmonogramu, takiego jak */5 * * * *, i tworzyć szkic skryptu powłoki uruchamianego przez zadanie. Zawsze testuj wyrażenie przed dodaniem go do produkcyjnego pliku crontab.

Podsumuj ten post następująco: