Cron je počítačový program, ktorý možno použiť na to, aby počítač vykonával úlohy v určitých časových intervaloch. Používa sa v operačných systémoch UNIX a v operačných systémoch podobných UNIXu, ako je napríklad Linux.
Cron možno použiť na plánovanie väčšiny opakujúcich sa úloh. Často sa používa na automatizáciu úloh súvisiacich s údržbou alebo správou počítača alebo počítačovej siete, hoci sa dá použiť aj na mnohé iné úlohy, ako je sťahovanie súborov z internetu a sťahovanie e-mailov v konkrétnych časoch alebo termínoch.
Názov počítačového programu cron pochádza zo slova cron, ktoré je odvodené od gréckeho slova pre čas, χρόνος (chronos).
Cron sa nastavuje úpravou súboru s názvom crontab (tabuľka cron). V tomto súbore sú uvedené konkrétne úlohy, ktoré sa majú v počítači spustiť, a čas, kedy sa majú spustiť.
Ako cron funguje a kde sú crontaby
Cron beží ako démon na pozadí a pravidelne kontroluje crontab záznamy. Existujú systémové crontaby (napr. /etc/crontab, zložka /etc/cron.d/) a používateľské crontaby (obvykle v /var/spool/cron/crontabs/ alebo spravované príkazom crontab). Systémový súbor /etc/crontab má často navyše jednu kolónku pre používateľa, ktorý sa má príkaz spustiť.
Formát záznamu v crontabe
Základný riadok v crontabe má päť časových polí a potom príkaz, ktorý sa spustí:
minúta hodina deň-mesiaca mesiac deň-týždňa príkaz Hodnoty môžu byť čísla, rozsahy, zoznamy alebo krokové hodnoty:
- minúta: 0–59
- hodina: 0–23
- deň-mesiaca: 1–31
- mesiac: 1–12 (alebo skratky ako Jan, Feb ... podľa implementácie)
- deň-týždňa: 0–7 (0 a 7 zvyčajne znamenajú nedeľa) alebo skratky Mon, Tue ...
Príklady zápisov v poliach:
*/5— každých 5 minút1-5— od 1. do 5. minúty/hodiny/...0,15,30,45— vymenované hodnoty
Bežné príklady
# každý deň o 02:30 30 2 * * * /usr/local/bin/backup.sh # každých 5 minút */5 * * * * /usr/bin/php /home/user/script.php >> /var/log/script.log 2>&1 # každé pondelok o polnoci 0 0 * * 1 /home/user/weekly-task.sh Cron tiež podporuje tzv. "špeciálne" reťazce, ktoré zjednodušujú plánovanie:
@reboot— spustiť pri štarte systému@hourly,@daily,@weekly,@monthly,@yearly
Správa crontabu
- crontab -e — upraviť crontab používateľa v prednastavenom editore.
- crontab -l — zobraziť aktuálny crontab používateľa.
- crontab -r — odstrániť crontab používateľa.
- Systémové crontaby sa spravujú úpravou súborov v
/etc/a pomocou konfigurácie balíka cronu (závisí od distribúcie).
Dôležité tipy a odporúčania
- Používajte absolútne cesty k príkazom a súborom (napr.
/usr/bin/python3), pretože crontab má obmedzené prostredie PATH. - V crontabe môžete nastaviť premenné prostredia, napríklad
MAILTO,PATH,SHELL. Napríklad:MAILTO="[email protected]" PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - Presmerovanie výstupu je dôležité, aby ste zachytili chyby a nezahltili e-mailové hlásenia:
> /var/log/task.log 2>&1. - Testujte príkaz priamo v shelli pred vložením do crontabu.
- Ak potrebuje skript bežať len raz, zvážte použitie systémového plánovača alebo cron vstupu s
@reboota kontrolou záznamu vykonania. - Anacron je doplnok vhodný pre notebooky alebo počítače, ktoré nie sú zapnuté 24/7 — zabezpečí spustenie úloh, ktoré vynechal cron počas vypnutia systému.
- Všímajte si časové pásma a letný čas — cron používa systémové nastavenie času. Ak potrebujete iné správanie, môžete explicitne nastaviť
TZv crontabe alebo volať príkazy s konverziou času.
Diagnostika a logy
Výkon cron úloh môžete sledovať cez systémové logy. Namiesto jednotného umiestnenia sa logy môžu nachádzať v rôznych súboroch podľa distribúcie:
/var/log/cron(niektoré systémy)/var/log/syslog(Debian/Ubuntu, hľadajte správy od cron)journalctl -u cron.servicealebojournalctl -u crond.servicepri systéme s systemd
Bezpečnosť a práva
Cron spúšťa úlohy s právami používateľa, ktorého crontab upravujete. Systémové crontaby môžu spúšťať úlohy ako root — buďte preto opatrní pri umiestňovaní skriptov a pri oprávneniach. Uistite sa, že skripty neobsahujú zraniteľné miesta a že sú správne zabezpečené proti zneužitiu.
Zhrnutie
Cron je jednoduchý, ale veľmi výkonný nástroj na plánovanie a automatizáciu opakujúcich sa úloh v systémoch UNIX a Linux. Správne nastavený crontab ušetrí čas a zníži manuálnu prácu, pričom je dôležité rozumieť formátu záznamov, prostrediu, v ktorom úlohy bežia, a vedieť diagnostikovať prípadné problémy v logoch. Pri práci s cronem používajte absolútne cesty, presmerovanie výstupu a zvážte použitie anacronu pre stroje, ktoré nebývajú nepretržite zapnuté.