Co je to cron a jak ho správně nastavit


Cron je program, který běží na pozadí serveru. Umožňuje spouštět libovolné aplikace, příkazy či skripty. Kouzlo cronu spočívá v tom, že příkazy dokáže spouštět automaticky, opakovaně a v časy, které si administrátor sám 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

Přihlaste se do Zákaznického Centra. V levém menu zvolte Domény > spravovat doménu, u které chcete cron nastavit, a v jejím detailu nastavte časování v panelu Crony:

jak na Crony
jak na Crony - možnosti nastavení

Dejte však pozor na to, jak cron nastavujete. Pokud si zvolíte vyklikání vlastního časování, 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ě

Dejte si se zadáním práci, ať vše nastavíte správně.

Proto doporučujeme nechávat nastavení na nás a zvolit možnost Výběru z nejčastějších možností opakování.

Jak nastavit cron ve VPS Centru

Přihlaste se do VPS Centra a v pravém menu přejděte do Cron:

Pokud chcete, aby se cron spustil například v pracovní dobu každých 10 minut, více hodnot vyberete přidržením Ctrl… Nastavení pak bude vypadat takto:

Je však třeba dát pozor, aby se vám hvězdička nedostala tam, kam nemá… 🙂

Dále není od věci si cron nějak pojmenovat, či si k němu udělat poznámku. Obzvlášť, pokud máte nastavených 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ě.