Linux obsahuje správu pravidelných úkonů - cron. K němu existuje prima rozhraní - crontab.
Když chceme vidět existující pravidelné úkony, pak napíšeme:
$ crontab -l
Pokud chceme seznam editovat, pak je to příkaz:
$ crontab -e
Editace je možná pomocí přednastaveného editor - více zde.
Záznamy jsou pak v následující podobě:
* * * * * /bin/execute/moje/skript1.sh
Těchto pět hvězdiček určuje časování jednotlivých skriptů.
* - minuty (0 - 59)
* - hodiny (0 - 23)
* - dny (1 - 31)
* - měsíce (1 - 12)
* - den v týdnu (0 - 6) - 0 je neděle
Takže předchozí zápis spustí skript každou minutu, každou hodinu, každý den, každý měsíc.
Pokud chceme spouštění jinak, musíme nahradit hvězdičky čísly:
0 3 * * 1 - je zápis pro spuštění vybraného skriptu každé pondělí ve 3:00 ráno.
Podobně můžeme použít i interval - každý pracovní den ve tři ráno bude:
0 3 * * 1-5
Lze využít i seznamu hodnot oddělených čárkou - pro spuštění skriptu každou 15tou a 45tou minutou bude
15,45 * * * *
Nebo jiní zápis pro spuštění skriptu každý 5 minut je:
*/5 * * * *
Pojmenované zápisy
Nemusíme se trápit s určitými definičními zápisy, lze využít zjednodušení:
@reboot - spustí se po restartu
@yearly - spustí se 1.1. každý rok (0 0 1 1 *)
@annually - stejné jako @yearly
@monthly - měsíční spuštění (0 0 1 * *)
@weekly - týdně (0 0 * * 0) - zde každou neděli - záleží na čísle dne, které zvolíme
@daily - denně (0 0 * * *) - zde každou půlnoc - záleží na nastavené hodině
@midnight - stejné jako daily - v případě 0 jako nastavené hodiny
@hourly - každou hodinu (0 * * * *)
Takže zápis do crontabu může být tento:
@daily /bin/execute/hodinove.sh
Logování
Lze nastavit výstup ze skriptu, ten je směrován do emailové schránky uživatele skritpu (pravděpodobně root). Toto lze změnit na specifický soubor s výstupem:
@daily /bin/execute/hodinove.sh >> /var/log/skripty/hodinove.log 2>&1
Kde konec zápisu obsahuje dvě čísla - výstupy.
1 - STDOUT - standarní výstup
2 - STDERR - standardní cyhová výstup
2>&1 - bude jeden soubor pro oba výstupy
Znak >> nastaví připojení nových záznamů na konec souboru, jiná možnost je > - to způsobí přepsání souboru s logy.
Výstup lze posílat pomocí emailu:
MAILTO="This email address is being protected from spambots. You need JavaScript enabled to view it." @daily /bin/execute/hodinove.sh
nebo:
@daily /bin/execute/hodinove.sh | mail -s "Cron vystup" This email address is being protected from spambots. You need JavaScript enabled to view it. - pro tento výstyup je nutné nainstalovat mailx
$apt-get install mailx