Crontab v Linuxu: PŘÍKLADY plánování úloh

⚡ Chytré shrnutí

Crontab v Linuxu plánuje automatické spouštění příkazů v pevně stanovených časech, datech nebo intervalech pomocí démona cron, což umožňuje administrátorům automatizovat zálohy, čištění protokolů, oznámení a rutinní údržbu systému bez jakéhokoli ručního zásahu.

  • Cron démon: Proces cron na pozadí čte soubory crontab a spouští každou naplánovanou úlohu přesně v nastavenou minutu.
  • 🗂️ Formát crontabu: Před příkazem ke spuštění je uvedeno pět časových polí – minuta, hodina, den v měsíci, měsíc a den v týdnu.
  • __ Úpravy úloh: Pro přidání nebo změnu úloh použijte crontab -e, pro jejich výpis crontab -l a pro jejich odebrání crontab -r.
  • 🔁 Speciální řetězce: Zkratky jako @reboot, @daily, @weekly a @hourly nahrazují pět časových polí pro běžné plány.
  • 📅 Praktické příklady: Připravené záznamy pokrývají každých pět minut, konkrétní dny v týdnu, měsíční běhy a úkoly spouštění.
  • 🤖 Asistence AI: Asistenti s umělou inteligencí a GitHub Copilot dokáží generovat a vysvětlovat cron výrazy během několika sekund.

Crontab v plánování úloh v Linuxu s příklady

Crontab, zkratka pro cron table, je konfigurační soubor a příkaz, který řídí Linux plánování úloh. Následující části vysvětlují formát crontab, příkazy pro přidávání, vypisování a odebírání úloh, speciální řetězce @ a připravené příklady plánování.

Co je crontab?

Cron je pojmenován podle řeckého slova „Chronos“, což znamená čas. Je to systémový proces (démon), který automaticky provádí úlohy podle nastaveného plánu. Cron je sada příkazů používaných ke spouštění pravidelných naplánovaných úloh. Crontab je zkratka pro „cron table“ a umožňuje vám použít plánovač úloh cron k provedení těchto úloh.

Crontab je také název programu používaného k úpravě tohoto plánu. Je řízen souborem crontab – konfiguračním souborem, který obsahuje seznam příkazů shellu, které se mají pravidelně spouštět podle zadaného plánu.

Proč používat Cron úlohy?

Zde jsou hlavní důvody pro používání úloh cron v Linuxu:

  • Provádí plánované zálohy souborů protokolů nebo databází.
  • Automaticky maže staré soubory protokolů.
  • ArchiMaže a čistí databázové tabulky.
  • Odesílá e-maily s oznámeními, jako jsou newslettery nebo připomenutí vypršení platnosti hesla.
  • Provádí pravidelné čištění dat uložených v mezipaměti.
  • Automatizuje opakující se úlohy v systémech Unix a Linux.
  • Automatizuje běžnou údržbu systému.

Jak používat cron v Linuxu?

Systémový balíček Linuxu obsahuje užitečný plánovač úloh s názvem crontab. Crontab je oblíbený, protože lze naplánovat spuštění úlohy pod uživatelským jménem root, což usnadňuje automatické změny systému. Úlohu jednoduše jednou změníte a pak počkáte, až se podle plánu znovu spustí.

Formát crontabu v Linuxu

Záznam v crontabu v Linuxu má šest polí. Prvních pět polí definuje čas a datum spuštění a šesté pole obsahuje příkaz, který se má spustit.

Syntaxe Crontab:

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

Níže uvedený diagram mapuje každou hvězdičku v položce crontab na pole, které ovládá, od minuty do dne v týdnu, následované příkazem, který se má spustit.

Diagram formátu crontab v Linuxu zobrazující pět časových polí a příkaz

Pět časových polí přijímá tyto hodnoty: minuta (0–59), hodina (0–23), den v měsíci (1–31), měsíc (1–12 nebo leden–prosinec) a den v týdnu (0–7, kde 0 a 7 znamenají neděli). Každé pole ovládáte těmito speciálními znaky:

  • Hvězdička (*): Najde všechny možné hodnoty pro dané pole.
  • Definujte rozsah: Pro nastavení rozsahu, například 1–10, 30–40, leden–bře nebo po–st, použijte pomlčku.
  • Definujte více rozsahů: Rozsahy oddělte čárkami, například duben-červen, říjen-prosinec.

Jak přidat/upravit Crontab

Uživatelé mohou upravovat své vlastní úlohy crontab pomocí následujícího příkazu crontab. Volba -u cílí na crontab konkrétního uživatele, proto zadejte uživatelské jméno, jak je znázorněno v následujících příkladech:

$ crontab -u -e 

Výše uvedený příkaz otevře osobní konfiguraci crontabu pro váš systém, kterou můžete upravovat ve výchozím textovém editoru.

Není třeba restartovat cron; změny se uloží automaticky. Chcete-li zobrazit aktuální úlohy, použijte:

$ crontab -l

Chcete-li odstranit úlohy crontab, použijte následující příkaz:

$ crontab -r

Chcete-li přidat nebo aktualizovat úlohu v crontabu, použijte následující příkaz:

crontab -e

Chcete-li upravit crontab jiného uživatele, pojmenujte ho pomocí volby -u:

crontab -u username -e

Jak vypsat Crontab

Zobrazení položek crontab aktuálního uživatele:

crontab -l

Zobrazení položek crontab konkrétního uživatele:

crontab -u username -l

Důležité příklady Crontab

Zde je několik důležitých, ihned použitelných příkladů plánů crontab:

Description Příkaz
Spouští různé plánovací úlohy. Následující příkaz se spouští denně v 7:00 a 17:00.
0 7,17 * * * /scripts/script.sh
Spustí cron úlohu každých 5 minut.
*/5* * * * *  /scripts/script.sh
Provede úkol každých Monday v 5 hodin ráno. To je užitečné pro týdenní úkoly, jako je čištění systému.
0 5 * * mon  /scripts/script.sh
Spouští váš skript v 3minutových intervalech.
*/3 * * * * /scripts/monitor.sh
Naplánuje cron úlohu, která se spustí v konkrétních měsících – zde v únoru, červnu a září.
* * * feb,jun,sep *  /script/script.sh
Spustí se ve vybrané dny. Tento příklad se spouští každý Monday a ve středu v 5 hodin.
0 17 * * mon,wed  /script/script.sh
Umožňuje spouštění cronu každou první sobotu v měsíci.
0 2 * * sat  [ $(date +%d) -le 06 ] && /script/script.sh
Spouští skript v 6hodinovém intervalu, nakonfigurovaný dle níže uvedeného postupu.
0 */6 * * * /scripts/script.sh
Naplánuje úlohu, která se má spustit dvakrát Monday a úterý. Použijte k tomu následující nastavení.
0 4,17 * * mon,tue /scripts/script.sh
Naplánuje spuštění cron úlohy každých 15 sekund.
* * * * * /scripts/script.sh
* * * * *  sleep 15; /scripts/script.sh
Plánuje úlohy na roční bázi. @yearly je podobné jako „0 0 1 1 *“. Úlohu spouští jednou ročně o půlnoci 1. ledna – praktické pro novoroční pozdravy.
@yearly /scripts/script.sh 
Spouští úlohy měsíčně. @monthly je podobné jako „0 0 1 * *“. Úlohu spouští první den každého měsíce o půlnoci.
@monthly /scripts/script.sh
Spouští více úloh pomocí jednoho záznamu v cronu.
* * * * * /scripts/script.sh; /scripts/scrit2.sh
Plánuje úlohy na týdenní bázi. @weekly je podobné jako „0 0 * * 0“. Spouští týdenní úlohy, jako je čištění systému každou neděli o půlnoci.
@weekly /bin/script.sh
Plánuje úlohy denně. @daily je podobné jako „0 0 * * *“. Úlohu spouští jednou denně o půlnoci.
@daily /scripts/script.sh
Spouští úlohy každou hodinu. @hourly je podobné jako „0 * * * *“. Spustí úlohu na začátku každé hodiny.
@hourly /scripts/script.sh
Spouští úlohy při restartu systému. @reboot je užitečný pro úlohy, které by měl systém spouštět při startu, což umožňuje automatické spuštění úloh na pozadí.
@reboot /scripts/script.sh

Nejčastější dotazy

Uživatelské crontaby jsou uloženy v /var/spool/cron/ (nebo /var/spool/cron/crontabs/ v Debianu a Ubuntu), zatímco systémový plán se nachází v souborech /etc/crontab a /etc/cron.d. Uživatelské crontaby vždy upravujte pomocí crontab -e, než abyste tyto soubory přímo otevírali.

Cron spouští úlohy pouze v přesně naplánovaném čase a přeskočí je, pokud je počítač vypnutý. Anacron tracks zaznamenává zmeškané úlohy a spouští je po opětovném zapnutí systému, takže je vhodný pro notebooky a stolní počítače, které neběží neustále.

Cron používá minimální prostředí, takže omezená cesta je obvyklou příčinou. Používejte absolutní cesty pro příkazy a skripty, skript nastavte jako spustitelný a přesměrujte výstup do souboru protokolu, abyste mohli zachytit případné chyby pro ladění.

Přidejte k příkazu >> /cesta/k/souboru_logu 2>&1 pro zachycení standardního výstupu a chyb v souboru. Případně nastavte proměnnou MAILTO v horní části crontabu, aby cron odesílal výstup každé úlohy e-mailem na tuto adresu.

Soubory /etc/cron.allow a /etc/cron.deny řídí přístup. Pokud existuje soubor cron.allow, mohou crontab používat pouze uživatelé uvedení v něm. Pokud existuje pouze soubor cron.deny, pak každý uživatel kromě uvedených uživatelů může plánovat úlohy.

Uživatelský crontab vytvořený pomocí crontab -e má pět časových polí následovaných příkazem. Systémový soubor /etc/crontab přidává pole s názvem uživatele, který úlohu spouští, a to v podobě minuty, hodiny, dne, měsíce, dne v týdnu, uživatele a nakonec příkazu.

Ano. Nástroje strojového učení dokáží vyhodnotit normální dobu běhu a dokončení úloh a poté označit anomálie, jako je úloha, která běží příliš dlouho, tiše selže nebo nedodrží svůj plán. Analýza protokolů umělé inteligence také seskupuje související chyby, aby se urychlila práce na jejich hlavní příčině.

Ano. GitHub Copilot dokáže generovat cron výrazy z komentáře v jednoduché angličtině, vysvětlovat, co dělá plán jako */5 * * * * a napsat návrh shellového skriptu, který úloha spouští. Vždy otestujte výraz před jeho přidáním do produkčního crontabu.

Shrňte tento příspěvek takto: