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


Zákaznická
podpora

Tento web používá k poskytování služeb a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Více...
Souhlasím