Pochopenie a používanie Cron: Komplexný sprievodca plánovaním úloh
Cron, krátko pre príkaz spustiť online, je výkonný plánovač úloh založený na čase v operačných systémoch podobných Unixu. Termín cron je hra so slovom kronos or chronos, ktorý v gréckej mytológii predstavuje čas. Názov cron pre časový plánovač úloh odráža jeho funkciu plánovania a vykonávania úloh v špecifických časoch alebo intervaloch, čo z neho robí vhodný odkaz na koncept času v mytológii.
Cron vám umožňuje automatizovať opakujúce sa úlohy, spúšťať skripty v špecifických intervaloch a udržiavať efektivitu systému. Tento komplexný sprievodca vás prevedie všetkým, čo potrebujete vedieť o crone, od inštalácie po používanie, kľúčovú slovnú zásobu a skutočné vzorky kódu.
Obsah
- čo je cron?
- Inštalácia Cron
- Základné pojmy a terminológia
- Syntax Cron
- Príklady a prípady použitia
- Bežné úskalia a osvedčené postupy
- Ďalšie zdroje cronu
Čo je Cron?
Cron je démon (proces na pozadí), ktorý beží na systémoch založených na Unixe, vrátane Linuxu a macOS. Jeho primárnym účelom je automatické vykonávanie naplánovaných úloh. Tieto úlohy môžu siahať od jednoduchých skriptov až po údržbu systému a zálohovanie.
Inštalácia Cron
Vo väčšine systémov podobných Unixu je cron predinštalovaný. Jeho dostupnosť môžete skontrolovať otvorením terminálu a zadaním:
crontab -e
Ak tento príkaz otvorí editor tabuľky cron, máte nainštalovaný cron. Ak nie, môžete ho nainštalovať pomocou správcu balíkov vášho systému. Napríklad na Ubuntu môžete použiť:
sudo apt-get install cron
Cron koncepty a terminológia
Skôr než sa pustíme do používania cronu, pochopme niektoré základné pojmy a terminológiu:
- crontab: Skratka pre cron tabuľka, je to súbor, ktorý obsahuje zoznam naplánovaných úloh pre používateľa.
- Cronjob: Jedna úloha alebo príkaz naplánovaný na spustenie v konkrétnom čase.
- Pole: Každý cronjob má päť polí, ktoré definujú, kedy sa úloha spustí:
- Minúta (0-59)
- Hodina (0-23)
- Deň v mesiaci (1-31)
- Mesiac (1-12)
- Deň v týždni (0-7, kde 0 aj 7 predstavujú nedeľu)
Syntax Cron
Pochopenie syntaxe položky crontab je kľúčové. Ide podľa vzoru:
* * * * * command-to-be-executed
Tu je komentované vysvetlenie, ktoré môžete vložiť do svojej úlohy cron:
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
* * * * * /var/www/html/myscript.php
Každá hviezdička (*) predstavuje pole vo výraze cron. Napríklad na naplánovanie úlohy každý deň o 3:30 by ste použili:
30 15 * * * command-to-be-executed
Cron príklady a prípady použitia
Pozrime sa na niekoľko praktických príkladov na ilustráciu použitia cronu:
- Denné spustenie skriptu: Ak chcete spustiť skript každý deň o polnoci, môžete použiť:
0 0 * * * /path/to/script.sh
- Spustenie skriptu každú hodinu: Pre hodinovú úlohu použite:
0 * * * * /path/to/script.sh
- Týždenná záloha: Ak chcete naplánovať týždenné zálohovanie na nedeľu o 2:XNUMX, použite:
0 2 * * 0 /path/to/backup-script.sh
- Spustenie úlohy v konkrétnych mesiacoch: Ak chcete spustiť úlohu iba v januári a júli o 8:30:
30 8 * 1,7 * /path/to/script.sh
Cron úskalia a osvedčené postupy
- Premenné prostredia: Uistite sa, že vaše úlohy cronu nastavujú potrebné premenné prostredia, pretože úlohy cronu nededia premenné prostredia vášho shellu.
- oprávnenia: Uistite sa, že ste nastavili povolenia pre súbor skriptu ako spustiteľný. Zakaždým, keď som znova uložil svoj skript, zistil som, že moje povolenia je potrebné znova nastaviť!
- Premenné cesty: Zadajte úplnú cestu k spustiteľným súborom a skriptom v rámci úloh cron, aby ste sa vyhli problémom s relatívnymi cestami.
- testovanie: Pred nastavením kritických úloh cron ich otestujte v bezpečnom prostredí, aby ste sa uistili, že fungujú podľa očakávania.
- Prihlásenie: Presmerujte výstup vašich úloh cron do súboru denníka, aby ste mohli sledovať ich vykonávanie a akékoľvek potenciálne chyby.
0 0 * * * /path/to/script.sh >> /path/to/cron.log 2>&1
Táto úloha cron spúšťa skript /path/to/script.sh
každý deň o polnoci a výstup (stdout aj stderr) vygenerovaný skriptom sa pripojí k súboru denníka
/path/to/cron.log
. Toto je bežná prax na zachytávanie a zaznamenávanie výstupu úloh cron na účely monitorovania a riešenia problémov. Poďme si rozobrať túto špecifickú syntax úlohy cron:
- *0 0 * * *: Táto časť definuje plán, kedy sa má spustiť úloha cron. V tomto prípade je naplánované spustenie každý deň o polnoci (0 minút po 0 hodinách).
- /cesta/k/script.sh: Toto je príkaz alebo skript, ktorý sa má vykonať pri spustení úlohy cron. Tento príklad ukazuje skript umiestnený na adrese
/path/to/script.sh
. - >> /cesta/k/cron.log: Táto časť presmeruje štandardný výstup (stdout) úlohy cron do súboru protokolu s názvom
cron.log
sa nachádza na/path/to/
,>>
operátor pripojí výstup k súboru protokolu, takže ak súbor neexistuje, vytvorí sa, a ak už existuje, výstup sa pridá na koniec súboru. - 2> & 1: Používa sa na presmerovanie štandardného výstupu (stdout) aj štandardnej chyby (stderr) do rovnakého súboru denníka. The
2
predstavuje stderr a1
predstavuje stdout. takže,2>&1
znamená, že stdout aj stderr sú presmerované do rovnakého súboru denníka špecifikovaného vyššie.
Cron je cenný nástroj na automatizáciu úloh na systémoch založených na Unixe. Vďaka flexibilným možnostiam plánovania môže zjednodušiť správu systému a zvýšiť efektivitu. Pochopením jeho syntaxe a dodržiavaním osvedčených postupov môžete využiť silu cronu na efektívnu automatizáciu rutinných úloh.
Ďalšie zdroje Cron
- Unixový démon - Dean Wilson