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.

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.
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
|

