Cron nastavuje čas od do každý deň. Len počas pracovnej doby. Správna konfigurácia plánovača úloh Cron

  • 01.05.2019

V systéme linuxúlohy sú automaticky spúšťané démonom crond a plánovaním automatický štartúlohy môže vykonávať nielen správca systému, ale aj používatelia.

Ako funguje crond

Spôsob, akým démon crond funguje, je jednoduchý. Po spustení (zvyčajne pri zavádzaní systému) sa démon prebudí každú minútu a skontroluje, či je na túto minútu naplánovaný nejaký program. Ak sa takéto programy nájdu, démon ich spustí a odošle e-mailové správy používateľom, ktorých spustenie je naplánované.

Plánovanie úloh

Plánovanie je jednoduchá úloha. Rozvrh je umiestnený v samostatnom súbore crontab. Každý riadok súboru obsahuje úlohu, ktorá musí byť spustená v určitom čase.

Formát záznamov crontab

Časť čas-dátum pozostáva z piatich číselných polí oddelených medzerami, ktoré určujú, kedy sa mala úloha spustiť:

Na uľahčenie vyplnenia týchto polí boli zavedené nasledujúce pravidlá:

  • Hodnoty môžete zadať ako číselné intervaly. Napríklad interval 1-3 v poli hodín znamená 1:00, 2:00 a 3:00 polnoc, 2-4 v poli deň v týždni - utorok, streda alebo štvrtok.
  • Intervaly je možné nastaviť v prírastkoch väčších ako jedna. Napríklad, ak chcete zadať každú druhú hodinu od polnoci, nastavte interval na 0-23 v krokoch po 2 oddelených lomkou: 0-23/2
  • Hviezdička (*) označuje celý rozsah hodnôt polí - od minima po maximum. Napríklad v poli dňa v mesiaci hviezdička znamená interval 0-31, v poli dňa v týždni - 0-7
  • Deň v týždni alebo mesiaci možno určiť prvými tromi písmenami jeho (anglického) názvu

Príklady času a dátumu

Niekoľko príkladov vyplnenia polí času a dátumu:

0 1 * * * Spustiť úlohu denne o 13:00 30 14 * * 0 Spustiť úlohu v nedeľu o 14:30 0 23-7/2:8 * * * Spustiť úlohu každé 2 hodiny od 23:00 do 7:00 a 8:00 0 12 * 1 pondelok Spustiť práca na poludnie každý pondelok v januári každý rok 0 12 2 feb * Spustite prácu každý rok druhého februára napoludnie

príkazové pole

Pole príkazu je oddelené od polí času a dátumu jednou alebo viacerými medzerami a siaha až na koniec riadku. Príkazy spracováva shell /bin/sh.

Napríklad nasledujúci záznam v súbore crontab by sa spustil /usr/sbin/backup každý deň o 1:00:

0 1 * * * /usr/sbin/backup

Niektoré príkazy (napríklad mail) vyžadujú vstup zo štandardného vstupného zariadenia. Toto je označené znakom percenta (%). Prvý takýto znak označuje začiatok štandardného vstupu, každý nasledujúci - zmenu riadku.

Úprava súboru crontab

Súbor crontab sa upraví pomocou príkazu crontab -e. Možné sú dva prístupy:

  • vytvorenie nového súboru so všetkými položkami, ktoré by mali byť zahrnuté súbor crontab, po ktorom nasleduje jeho zápis na disk pod týmto názvom pomocou príkazu crontab;
  • priamu úpravu súborov pomocou príkazu crontab -e.

Zápis zo súboru

Ak chcete zapísať obsah súboru crontab z iného súboru, musíte tento iný súbor vytvoriť (v známom textovom editore) so všetkými položkami, z ktorých by mal súbor crontab pozostávať. Môže to byť napríklad nasledujúci záznam:

0 1 * * * /usr/sbin/backup

Vygenerovaný súbor by mal dostať vhodný názov, napríklad úlohy cron . Po zadaný súbor vytvorený, jeho obsah musí byť zapísaný do súboru crontab príkazom:

~$ crontab cronjobs

Obsah súboru cronjobs úplne nahradí obsah súboru crontab tohto používateľa. Pomocou tejto metódy môže každý používateľ upraviť svoj súbor crontab. Superuser má špeciálne právo upravovať súbory crontab iných používateľov. Úprava súboru niekoho iného je označená príznakom -u. Napríklad príkazom:

~# crontab -u oleg cronjobs

súbor cronjobs je zapísaný ako súbor crontab používateľa oleg.

Priama úprava súboru crontab

Príkaz crontab sa vyhýba viackrokovej operácii vytvárania samostatný súbor. Ak zadáte príkaz crontab s voľbou -e, môžete priamo upraviť súbor crontab.

V predvolenom nastavení príkaz crontab s voľbou -e načíta súbor crontab do súboru . Editor Vi- výkonný, aj keď zložitý nástroj, obľúbený medzi skúsených používateľov Unix. Niekto, kto preferuje iný editor, napr. xupraviť, môžete nastaviť príslušnú hodnotu premenná prostredia EDITOR:

~$ export EDITOR=xedit

Potom zadajte príkaz

spôsobí, že sa súbor crontab otvorí v zadanom editore.

Podobný bežný používateľ môže upravovať vlastný súbor crontab , superužívateľ môže upravovať súbory crontab iných používateľov. Na tento účel sa používa príkaz:

~# crontab -u užívateľské meno -e

Zobrazenie súboru crontab

Ak chcete zobraziť obsah súboru crontab, zadajte príkaz:

Superpoužívateľ môže zobraziť súbory crontab iných používateľov:

~# crontab -u užívateľské meno -l

Odstránenie súboru crontab

Ak chcete odstrániť obsah svojho súboru crontab, používateľ zadá príkaz:

Superpoužívateľ môže odstrániť súbory crontab iných používateľov.

, | |

Cron je dnes jedným z najbežnejších spôsobov automatizácie spúšťania procesov v systéme Linux. Cron je démon, ktorý beží ďalej pozadie a umožňuje vám naplánovať a automatizovať spustenie rôznych úloh (vrátane úloh súvisiacich s podporou servera). Na tento účel sa používa konfiguračný súbor crontab.

Inštalácia Cron

Na tento moment takmer všetky distribúcie sa dodávajú s už štandardne nainštalovaným démonom cron. Ak cron nie je predvolene nainštalovaný, možno ho rýchlo nainštalovať pomocou nasledujúcich príkazov:

Ubuntu/Debian:

aktualizácia sudo apt-get
sudo apt-get nainštalovať cron

CentOS/Red Hat Linux:

aktualizácia sudo yum
sudo yum nainštalujte vixie-cron crontabs

Po dokončení inštalácie sa uistite, že cron beží na pozadí:

sudo /sbin/chkconfig crond on
sudo /sbin/service crond start

Základná syntax

Zvážte nasledujúci príklad úlohy, ktorej spustenie chcete naplánovať:

5 * * * * curl http://www.google.com

Syntax plánovania rôzne úlohy sa môže na prvý pohľad zdať mätúce. V skutočnosti je to veľmi krátke a jednoduché, len treba prísť na to, ako to čítať. Každý riadok je rozdelený na plán a príkaz. Do riadku je možné zadať takmer akýkoľvek príkaz. Harmonogram je rozdelený do 5 rôznych oblastí plánovania v nasledujúcom poradí:

<Минуты> <Часы> <Дни_месяца> <Месяцы> <Дни_недели>

príklady cronu

Táto časť obsahuje príklady plánovania najbežnejších úloh.

Ak chcete, aby sa príkaz spúšťal automaticky každú minútu:

Spustenie príkazu každú dvanástu minútu v hodinu (08.12, 09.12 atď.):

Ak chcete, aby sa príkaz spúšťal každých 15 minút:

0,15,30,45 * * * *

Automatické vykonanie príkazu každý deň o 4:00:

Spustenie príkazu každý utorok o 4:00:

Rozvrh je možné rozdeliť. To znamená, že namiesto 0,15,30,45 môžete použiť:

Venujte pozornosť rozsahu 2-6. Daná syntax spustí zadaný príkaz od 2:00 do 6:00 každých 15 minút.

Ako vidíte, mimoriadne výkonná a flexibilná syntax cron vám umožňuje určiť takmer akýkoľvek časový interval.

Nastavenie cronu

Po vytvorení plánu úloh ho musíte umiestniť na správne miesto v systéme, aby ho démon mohol nájsť a prečítať. Vo všeobecnosti existuje niekoľko takýchto bodov v systéme, ale spravidla je takýto plán umiestnený v crontab používateľa. Ako už bolo spomenuté, crontab je konfiguračný súbor démona cron, ktorý obsahuje plán spúšťania určitých príkazov a programov. Tento súbor sa nachádza v /var/spool/cron/crontab, ale nie je zvykom ho priamo upravovať. Vložiť do súboru požadované programy Rovnomenný príkaz je crontab. To znamená, že ak chcete upraviť súbor crontab, môžete jednoducho zadať:

Tento príkaz sa otvorí textový editor, pomocou ktorého môžete vykonať všetky potrebné zmeny; každý Nová úloha treba zadať na nový riadok.

Ak chcete zobraziť crontab bez vykonania akýchkoľvek zmien, použite príkaz:

Crontab môžete vymazať pomocou nasledujúceho príkazu:

Pokročilý používateľ môže upravovať crontab iných používateľov pomocou:

crontab -u<пользователь>-e

cron výstup

Po dokončení úlohy cron odošle výstup do emailová adresa užívateľa (pokiaľ výstup nemusí smerovať do logu alebo /dev/null). Adresa Email možno zadať manuálne pridaním parametra MAILTO do vyššia časť crontab. Môžete tiež zadať shell, ktorý sa má spustiť, cestu k binárnemu súboru cron súbor a domovský adresár. Pre to:

prvý otvorený crontab:

potom to upravte takto:

SHELL=/bin/bash
DOMOV=/
MAILTO=” [chránený e-mailom] _user.com”
#Toto je komentár
* * * * * echo „Spustiť tento príkaz každú minútu“

Tento riadok sa vráti Spustite tento príkaz každú minútu. Démon cron odošle tento výstup na e-mail [chránený e-mailom] _user.com. To, samozrejme, nie je príliš pohodlné. Ako už bolo uvedené, tento záver môžu byť nasmerované do súboru denníka, aby sa predišlo takýmto situáciám.

Ak to chcete urobiť, stačí pridať:

* * * * * echo ‘Spustiť tento príkaz každú minútu’ >> file.log

Poznámka: symboly >> nasmerujú výstup do protokolu. Okrem logovania môžete použiť aj /dev/null s nasledujúcim PHP skriptom spusteným na pozadí.

* * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1

Obmedzenie prístupu ku cronu

Ak chcete obmedziť prístup k démonovi cron, musíte použiť súbory /etc/cron.allow a /etc/cron.deny. ak chcete povoliť (povoliť) alebo zakázať (zakázať) prístup konkrétnemu používateľovi, stačí zadať meno používateľa do príslušného súboru. V predvolenom nastavení je démon cron dostupný pre všetkých používateľov. Ak chcete zakázať prístup všetkým používateľom a udeliť prístup iba príkladu používateľa, musíte použiť nasledujúcu postupnosť príkazov.

V našich materiáloch venovaných Server Ubuntu Z času na čas sa objaví otázka vykonávania akýchkoľvek úloh podľa plánu. Aby sme nevysvetľovali zakaždým to isté, rozhodli sme sa tvoriť daný materiálčo by malo pomôcť správcov systému ovládať a efektívne využívať plánovač úloh v systéme Linux.

Ubuntu Server používa ako plánovač úloh cron- plánovač s rozhraním príkazový riadok. On je dôležitá časť systém a začne fungovať ihneď po inštalácii, pričom spustí rôzne systémové úlohy. Naším cieľom je dať to do našich služieb, najmä preto, že to nie je také ťažké, ako sa zdá.

Existujú dva typy rozvrhov cron: používateľ a systém. Líšia sa tým, že prvý je vytvorený používateľmi a spúšťaný s používateľskými právami, druhý sa používa na administratívne alebo systémové účely a môže byť spustený v mene ktoréhokoľvek používateľa.

Ak chcete vytvoriť alebo upraviť vlastný plán, zadajte príkaz:

Crontab -e

Pri prvom spustení vás utilita vyzve na výber editora, odporúčame vybrať mcedit(vyžaduje nainštalovaný mc), alebo iný editor, s ktorým viete pracovať.

Formát rozvrhových riadkov je:

Príkaz minúta hodina deň mesiac deň_týždeň

  • Minúta- čas v minútach od 0 do 59
  • hodina- od 0 do 23
  • deň- deň v mesiaci od 1 do 31
  • mesiac- od 1 do 12 resp písmenové označenia jan - dec
  • Deň v týždni- od 0 do 6 (0 - nedeľa) alebo so - ne
  • Tím- reťazec vo formáte shell, ktorý sa vykoná, môže byť zapísaný ako príkaz1 && príkaz2 na spustenie viacerých príkazov za sebou.

Minúty, hodiny, dni je možné špecifikovať nasledovne:

  • Význam- číslo označujúce dátum alebo čas, zástupný znak je povolený * v plnom rozsahu
  • Niekoľko významov- je povolené zadať niekoľko hodnôt oddelených čiarkami, napríklad 2,14,22
  • Rozsah hodnôt- označené pomlčkou, napríklad 2-10
  • Hodnotový krok- označené zlomkom, ktorého menovateľom je krok, napríklad */3 - každá tretia hodnota 0, 3, 6, 9 atď. Čitateľ musí byť rozsah hodnôt alebo hviezdička.

Zvážte nasledujúci príklad vstupu:

0 8-19/2 * * 1 /domov/ivanov/test

To znamená, že každú druhú hodinu od 8 do 19 (8, 10, 12, 14, 16) v pondelok spustíte testovací skript v Ivanovovom domovskom adresári.

Okamžite vás chceme varovať pred častou chybou, pri zadávaní periodického vykonávania musia byť výslovne uvedené všetky dátumy, hviezdička označuje celý rozsah hodnôt a nie ich absenciu. Napríklad, ak potrebujete spustiť určitý skript každú hodinu od 10 do 15, bolo by to nesprávne:

* 10-15 * * * /domov/ivanov/test

Tento riadok spustí skript každú minútu v rozmedzí od 10. do 15. hodiny. Bude to správne:

0 10-15 * * * /domov/ivanov/test

Táto položka umožní spustenie skriptu na začiatku každej hodiny v zadanom rozsahu.

Okrem dátumu je možné použiť niekoľko špeciálnych reťazcov:

  • @reštartovať- spustiť príkaz pri reštarte
  • @ročne alebo @ročne- vystupovať 1. januára, podobne ako v zázname: " 0 0 1 1 * "
  • @mesačne- vykonávať 1. deň každého mesiaca podobne “ 0 0 1 * * "
  • @týždenne- vystupovať každú nedeľu, je ekvivalentné „ 0 0 * * 0 "
  • @denne alebo @polnoc- každý deň o polnoci 0 0 * * * "
  • @hodina- raz za hodinu, 0 * * * * "

Takže pre každodenné vykonávanie nášho skriptu každú polnoc môžete napísať:

@midnight /home/ivanov/test

Po dokončení plánovania uložte súbor a ukončite editor. Vlastný rozvrh bude uložený v /var/spool/cron/crontabs pod menom súčasný užívateľ.

Pre systémové a administratívne úlohy sa poskytuje súbor. /etc/crontab syntax položiek v ňom sa vyznačuje prítomnosťou ďalšej hodnoty - používateľa, pod menom ktorého sa úloha spustí:

Užívateľský príkaz minúta hodina deň mesiac deň_týždeň

Príklad takéhoto zápisu:

0 19 * * 1-5 root /etc/backup

Podľa čoho sa o 19:00 od pondelka do piatku spustí scenár /etc/backup v mene užívateľa koreň.

Tento súbor obsahuje aj systémové plány, preto by sa mal upravovať opatrne. V ňom by mali byť umiestnené všetky systémové a administratívne úlohy.

Ako vidíme cron pomerne jednoduché použitie, ale zároveň poskytuje bohaté príležitosti na nastavenie plánov na serveri Ubuntu. Dúfame, že tento článok pomôže správcom zvládnuť tento nástroj.

Na systémoch podobných Linuxu môže byť veľmi často potrebné automatizovať niektoré rutinné procesy. Na tento účel sa používajú špeciálne plánovače. Jedným z najznámejších z nich je Cron, ktorého nastaveniam sa budeme venovať v tomto článku.

čo je Cron?

Názov programu je odvodený z gréckeho „chronos“, čo znamená čas. Čo je vlastne logické. Úlohou démona je určité momenty vykonávať príkazy v ňom napísané. Samotný proces implementácie je založený na kontrole cron tabuliek a ich porovnávaní s časom.

súbor crontab

Najdôležitejším prvkom nastavenia Cron je konfiguračný súbor crontab. Obsahuje vykonávacie príkazy a cesty k skriptom. Všetky bežia ako superužívateľ. Keďže sú umiestnené v adresári /etc/cron.d, tieto súbory musia byť nakonfigurované tam.

Každý jednotlivý používateľ systému má svoj vlastný súbor crontab.

Rôzne distribúcie Linuxu používajú rôzne adresáre úložiska užívateľské nastavenia. Pre RedHat je to var / cievka/cron. Na Debiane a Ubuntu to bude var/spool/cron/crontabs. A var/spool/cron/tabs v SUSE.

Zoznam príkazov na správu crontab

Cron má sadu špeciálnych príkazov, ktoré možno použiť na ovládanie plánovača. Musíte ich použiť v spojení s crontabom. Tu je krátky zoznam:

  • -u používateľské meno. Nastaví používateľa, ktorého úlohy a nastavenia budú spracované ďalšie akcie. Ak vynecháte daný kľúč, potom sa nastaví predvolený používateľ.
  • -l. Zobrazí aktuálny zoznam úloh.
  • -e. Spustí editor pre plánovač úloh.
  • -r. Odstráni všetky existujúce úlohy zo zoznamu.

Formát úlohy

Ako už bolo spomenuté vyššie, konfigurácia Cronu spočíva v nastavovaní príkazov špeciálny súbor. Vyzerá to ako jednoduchý zápis pozostávajúce zo šiestich stĺpcov:

  • prvý je počet minút. Dostupný interval je od 0 do 59. Je možné použiť viacero hodnôt, rozsah a Špeciálne symboly;
  • druhý stĺpec sú hodiny. Môžu sa použiť hodnoty od 0 do 23;
  • ďalej - deň. Tu môžete zadať číslo od 1 do 31;
  • štvrtý mesiac. Minimálna hodnota 1, maximálne - 12;
  • piaty týždeň. 0 alebo 7 zodpovedá nedeli;
  • posledný príkaz je ten, ktorý sa vykonáva.

Ako už bolo spomenuté, v súbore môžu byť špecifikované špeciálne znaky, "*" alebo "/". Napríklad taký záznam - 23 */2 *** echo "Run" znamená, že každú párnu hodinu a 23 minút sa zobrazí nápis "Run".

Vlastnosti súboru crontab

Pri nastavovaní Cron musíte pamätať na to, že má špecifické vlastnosti, ktoré je potrebné vziať do úvahy pri konfigurácii:

  • každý súbor musí skončiť prázdny reťazec, inak môže byť ignorovaná posledná položka a niekedy aj celý súbor;
  • súbory umiestnené v adresároch s bodkou v názve budú plánovačom tiež ignorované;
  • znaky libry "#" možno použiť v konfiguračných súboroch. Používajú sa na označenie riadkov s komentármi. To je veľmi užitočné pri popise naplánovaných úloh a príkazov.

Ďalšie premenné

Pri nastavovaní Cronu môžete v príkazoch použiť špeciálne hodnoty a skratky. Ak chcete napríklad určiť deň v týždni, môžete použiť nasledujúci zoznam:

  • slnko - nedeľa
  • pondelok - pondelok
  • utorok - utorok;
  • streda - streda;
  • štvrtok - štvrtok;
  • piatok - piatok
  • sobota - sobota.

Existujú aj samostatné hodnoty písmen pre mesiace - jan, feb, mar, apr, máj, jún, júl, aug, sep, oct, nov, dec.

Existujú aj samostatné premenné na konfiguráciu Cron, ktoré môžu nahradiť celé príkazové riadky:

  • @reštartovať. Príkaz sa spustí pri každom spustení počítača;
  • @ročne. Táto úloha bude prebiehať raz ročne. Ekvivalentný zápis v číselnom tvare môže byť: 0 0 1 1 *. Jeho synonymum môže byť napísané aj ako @ročne;
  • @mesačne. Ako by ste mohli uhádnuť z názvu, táto premenná spúšťa príkaz raz za mesiac. Jeho číselný náprotivok je 0 0 1 * *;
  • @týždenne. Táto premenná sa spustí každý týždeň;
  • @denne. Raz za deň;
  • @polnoc. Spustenie sa uskutoční o polnoci;
  • @hodina. Každú hodinu.

Nastavenie Cron na Centos 7

Samotný proces inštalácie a konfigurácie sa príliš nelíši od iných podobných Linuxové distribúcie. Pred nastavením Cron na Centos musíte do systému nainštalovať balík cronie. Môžete to urobiť pomocou príkazu yum install cronie. Ak chcete vytvoriť súbor s pokynmi, musíte v termináli spustiť crontab -e. Všetky systémové nastavenia Cron bude uložený v /var/spool/cron/username.

Niekoľko užitočných príkladov vytvárania často sa opakujúcich úloh

Cron je možné prispôsobiť tak, aby pokryl takmer všetky potreby každého používateľa.

  • 00 09-17 * * 1 - 5 /cesta/ k príkazu/korune. Tento príkaz automaticky vykoná naplánovanú akciu každý pracovný deň od 9:00 do 5:00 každú prvú minútu;
  • 00 9.17 * * * /cesta/ k príkazu/ cron. V tomto príklade sa príkaz vykoná dvakrát denne. Prvý o 9, druhý - o 5:00. Znak "*" znamená, že príkaz sa vykoná každý deň, mesiac a rok;
  • Tiež nezabudnite na symbolické premenné. Napríklad @monthly spustí úlohu každý mesiac v prvej minúte prvej hodiny prvého dňa. A @daily pobeží každý deň.