Administrace Cronu

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