Cron aneb jak na plánování úloh

Cron aneb jak na plánování úloh

Minule jsme si pověděli o správě úloh v operačním systému GNU/Linux. Nyní je na čase naučit se úlohy plánovat. K tomu slouží geniální unixový démon cron.

Samotný cron není nic víc než softwarový démon, který v předem definovaném čase automatizovaně spouští nějaký příkaz, resp. proces. Používá se tedy jako plánovač úloh, a to zejména těch opakovaných (k jednorázovým se dostaneme příště s popisem nástroje at).

Periodicky tak můžeme vykonávat určitý předem definovaný úkol – cron se často používá například pro pravidelné zálohování v nočních hodinách nebo kupříkladu k automatizovanému restartování určitých služeb (či celého systému) v předem definovaný čas anebo k plánovanému spuštění dávkových úloh v rámci hromadného zpracování dat.

Pro spouštění úloh se využívá definice úkolu v souboru crontab, resp. /etc/crontab. Pro jeho snazší editaci existují nástroje, které automaticky spustí textový editor, stačí tedy jen z příkazové řádky spustit příkaz crontab a můžeme rovnou pracovat.

Jednotlivé příkazy jsou zapsány na řádcích, kde jako první je uveden čas a následně pak samotné zadání úkolu. Typicky například:

15 0 * * * uzivatel /usr/bin/updatestats

Uvedený příkaz spustí program /usr/bin/updatestats přesně 15 minut po půlnoci každý den pod uvedeným uživatelem (uzivatel).

Syntaxe je zde následující:

1. Minuta (0–59)

2. Hodina (0–23)

3. Den v měsíci (1–31)

4. Měsíc (1–12)

5. Den v týdnu (0 = Neděle, 1 = Pondělí, …, 6 = Sobota)

Každé z uvedených polí může také obsahovat hvězdičku, což znamená, že se na danou hodnotu nebere ohled, resp. že se příkaz provádí vždy (např. hvězdička v položce hodina znamená, že se příkaz provádí každou hodinu).

Dále může obsahovat konkrétní číslo (5), seznam oddělený čárkou (15,30,45), rozsah oddělený pomlčkou (1-10) a některé implementace Cronu umožňují i složitější syntaxe (např. lomítko označující násobky, tedy */5 může znamenat „každých pět minut“).

Zajímavostí také je možnost editace uživatelského cronu, tedy nastavení úloh, které nebudou spouštěny z hlavního cronu, ale z osobního – vázaného na uživatele. K tomu slouží zápis crontab –e.

V tomto případě je de facto vše stejné, pouze při zadávání úloh do souboru již nespecifikujeme uživatele (úlohy budou spouštěny pod účtem uživatele, který crontab -e spustil). Z účtu root můžeme tímto způsobem editovat také seznamy úloh ostatních uživatelů, a to přidáním přepínače -u uzivatel, tedy například crontab -e -u pepa. Při zadávání jednotlivých úloh ani zde již uživatele nespefikujeme, protože vše bude spuštěno pod uživatelem „pepa“:

15 0 * * * /usr/bin/updatestats

Cron je užitečný a velice silný nástroj, jehož služby jistě oceníte. V následující části se podíváme také na plánování jednorázových akcí s nástrojem at.

Autor: Jirka Dvořák

Nejlepší články

úložné boxy pro součástky a komponenty
Supermicro server s AMD CPU
Chladící infrastruktura s technologií freecooling