// zrovna čtete...

Unix, Linux

Crontab v praxi

Cron

Cron je unix, solaris utilita, která umožňuje automatické spouštěnmí úkolů (scriptů) v pravidelných intervalech. To je velmi užitečné například při zálohování dat, pravidelné údržbě systému nebo kontrole funkčnosti vzdálených zařízení.
Crontab (cron tabulka) je soubor, který obsahuje soupis cron údajů,  které jsou spouštěny v určeném čase.  Každá spoušť je na samostatném řádku.  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