Jak nastavit cron

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 bývá využíván například pro noční zpracovávání dat, zálohování nebo například k exportu feedu zboží pro srovnávače cen atp.

Jak nastavit cron

V pravém menu zvolte doménu, které se bude cron týkat a nastavte časování:

Příklad na obrázku spustí zvolený skript každý den v jednu ráno. Symbol hvězdičky znamená, že platí pro všechny hodnoty níže. Nezáleží tedy jestli je pondělí nebo únor 🙂 – Platí to vždy… Pokud byste do uváděného příkladu přidali například Led, znamenalo by to, že se tento skript bude pouštět jen v lednu.

Pokud cron nastavíte tak jak je uvedeno na obrázku níže, bude se pouštět pouze 3. dubna ale to jen za podmínky že datum vyjde na středu. To je trochu nesmyslné, takže když budete chtít skript spustit každého 3. dubna, bude v hodnotě týden hvězdička.

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/bin/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ě.

Poslední změna: 10 června, 2020

Pomohla ti tato nápověda?

Související články nápovědy