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