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


