Co je to cron
Cron je program, který běží na pozadí serveru. Umožňuje spouštět libovolné aplikace, příkazy či skripty. Kouzlo cronu je v tom, že tyto příkazy dokáže spouštět automaticky, opakovaně a v časy, které si administrátor zvolí. Často se využívá například pro noční zpracovávání dat, zálohování nebo například k exportu feedu zboží pro srovnávače cen atd.
Jak nastavit cron
V Zákaznickém Centru v menu zvolte Domény, pak spravovat doménu, které se bude cron týkat, a v jejím detailu nastavte časování v panelu Crony:
Dejte však pozor na to, jak cron nastavujete, pokud si zvolíte vlastní nastavení. Podle příkladu níže by se cron spouštěl každý měsíc, 3. den v měsíci a ještě navíc pouze, pokud na tento den připadne zrovna středa.
Dejte si se zadáním práci, ať vše nastavíte správně
Pokud budete chtít pouštět cron například v pracovní dobu každých 10 minut, vyberte více hodnot přidržením Ctrl… Nastavení pak bude vypadat takto:
Je však třeba dát pozor, aby se Vám nedostala hvězdička tam kam nemá… 🙂
Dále není od věci si cron nějak pojmenovat, či si k němu udělat poznámku. Pokud máte nastaveno více cronů, bude se tato funkce určitě hodit.
Zápis časování
Každý zápis v Cron tabulce má 5 hodnot, které určují čas.(minuta 0-59, hodina 0-23, den v měsíci 1-31, měsíc 1-12, den v týdnu 0-7 kdy 0 a 7 jsou neděle). Poté následuje mezera a cesta ke spouštěnému skriptu. Na internetu lze nalézt i jiné pořadí, ale pro Debian platí toto. Namísto čísla jde zapsat * viz výše. Jednotlivé hodnoty se oddělují mezerou. Pokud budete chtít spouštět skript každých X minut, jde před hodnotu napsat */. Při více hodnotách lze použít čárka nebo pomlčka. Vše je krásně vidět na příkladech níže…
Každý den ve dvě ráno:
0 2 * * * (0. minuta, 2. hodina, platí pro jakýkoliv den týden i měsíc)
Každou minutu
* * * * *
Každých 10 minut
*/10 * * * *
Každé 3 dny
0 0 */3 * * – Zde nezapomeňte načasovat minuty a hodiny. Možná vás bude svádět zapsat časování jako * * */3 * * ale to by se skript spouštěl každou minutu, celých 24 hodin každého 3. dne…
Každé pondělí o půlnoci
0 0 * * 1
Každých 30 minut v pracovní dobu
*/30 9-17 * * 1,2,3,4,5 – Pusť každých 30 minut, v hodinách mezi 9 až 17, každý den, každý měsíc, pokud je po,ut,st,čt a pá. Poslední hodnota lze samozřejmě zapsat i jako 1-5.
Systémové crony
Některé příklady, které jsme uvedli ale přes VPS centrum zadat nelze. Nezbude proto nic jiného než se do toho pustit přes SSH. Nezapomeňte však, že VPS centrum vás chrání před rozbitím serveru. Pokud používáte SSH, může se přihodit neštěstí. Ale vy zálohujete, že?
Crony, které lze načasovat z VPS centra se spouštějí pouze pod uživatelem www-data. Pokud potřebujete spouštět něco, co vyžaduje vyšší práva jako například root, což je třeba pro promazání swapu či reboot každou noc, musíte cron vytvořit ručně jako soubor a nahrát ho do složky /etc/cron.d
- Přihlaste se přes SSH
- Pusťte třeba mc a najděte složku /etc/cron.d
- Vytvořte v dané složce nový soubor a cron v něm zadejte ručně.
Příklad: Promazání swapu každý den v 2:00
0 2 * * * root /usr/sbin/swapoff -a && /usr/sbin/swapon -a && /usr/bin/sync && echo 1 > /proc/sys/vm/drop_caches
Důležité je také dávat pozor na volání skriptů z URL adresy (vzdálené skripty např. www.vas-hosting.cz/muj-cron.php). Pouštět vzdálené skripty obecně nedoporučujeme. Prvním důvodem je, že pokud adresa ke skriptu obsahuje znaky jako &, musíte je escapovat. Tím druhým důvodem je, že může velmi snadno dojít k přerušení jeho běhu z důvodu nějakého time-outu. To znamená, že vám nemusí skript doběhnout do konce. Navíc skript zabírá spojení na webový server úplně zbytečně.