Cron je softwarový démon, který v operačních systémech automatizovaně spouští v určitý čas nějaký příkaz resp. proces (skript, program apod.). Jedná se vlastně o specializovaný systémový proces, který v operačním systému slouží jakožto plánovač úloh, jenž umožňuje opakované spouštění periodicky se opakujících procesů (např. noční běhy dávkových úloh při hromadném zpracování dat) apod. Každý uživatel si může vytvářet svoje crony sám.
Crontab v praxi
Jednoduchý crontab může vypadat například takto:
# Delej neco kazdou lichou hodinu kazdy sudy den:
* 1-23/2 */2 * * root /usr/local/sbin/delej_tady_neco.sh
# Zalohovani dat 1 x tydne v noci z patku na sobotu (v 0:42):
42 0 * * 6 root /usr/local/sbin/zal_data_tyden.sh
Znak # na začátku řádku značí komentáře.
Crontab příkazy
export EDITOR=vim
– specifikuje editor pro editaci crontab
crontab -e
Upravit váš crontab soubor nebo vytvořit v případě, že neexistuje.
crontab -l
Zobrazit váš crontab.
crontab -r
Odstranit váš crontab.
crontab -v
Zobrazit poslední datum editase crontab souboru. (Tato volba není dostupná pouze na všech systémech.)
Uživatel root může také přistupovat do crontab editací souboru /etc/crontab. Tento soubor je primárně určen pro systémové spouště (rotace logu a pod.). Má navíc jeden nepovinný parametr, jméno uživatele pod kterým se má script spustit. (Např: 30 18 * * * root /home/petr/muj_script.sh
)
Syntaxe souboru
* * * * * příkaz/script ke spuštění
- - - - -
| | | | |
| | | | +----- den v týdnu (0 - 6) (Neděle=0)
| | | +------- měsíc (1 - 12)
| | +--------- den v měsíci (1 - 31)
| +----------- hodina (0 - 23)
+------------- minuta (0 - 59)
Cron omezení
Nastavení práv pro použití cronu se provádí pomocí souborů /usr/lib/cron/cron.allow a /usr/lib/cron/cron.deny. Do těchto souborů mapište jednoho uživatelské jméno na řádek. Pokud je k dispozici pouze cron.deny a je prázdný, crontab mohou použít všichni uživatelé.
Příklady
Řádek v souboru crontab níže odstraňuje všechny soubory z /home/someuser/tmp každý den v 18:30 hodin.
30 18 * * * rm /home/someuser/tmp/*
Změnou parametrů dosáhneme spouštění v různých časech:
Každou hodinu (v 0 minut):
0 * * * *
Každých 5 minut:
*/5 * * * *
Každou minutu:
* * * * *
00:30 Hodin 1. Ledna, Června a Prosince:
30 0 1 1,6,12 *
20.00 Hod. každý všední den v týdnu, ale jen v Říjnu:
0 20 * 10 1-5
Půlnoc 1. ,10. a 15. v měsíci:
0 0 1,10,15 * *
Ve 12.05 a 12.10 každé Pondělí a 10. každý měsíc:
5,10 0 10 * 1
Zasílání emailů
Ve výchozím nastavení pošle crontab zprívu o provedení úlohy do mailboxu příslušného uživatele. Můžete také nastavit posílání zpráv na email pomocí direktivy
MAILTO="yourname@yourdomain.com"
na začátku souboru.
Pokud nechcete aby crontab cokoliv posílal přesměrujte výstup na /dev/null
30 18 * * * rm /home/someuser/tmp/* > /dev/null 2> & 1
Logování
Provádí se přesměrováním výstupu do souboru.
30 18 * * * rm /home/someuser/tmp/* > /home/someuser/cronlogs/clean_tmp_dir.log
Nebo lépe použít příkaz „logger“
Cron pro roota
pokud chcete používat cron pro roota je nutno pod uživatelským účtem root editovat soubor /etc/crontab
jediný rozdíl oproti editaci pod uživatelem je 5 parametr který určuje pod kterým uživatelem bde skript používán.
Upozornění po editaci /etc/crontab je nutné restartovat cron příkaz
/etc/init.d/cron restart nebo service cron restart