Crontab - Ak máte v súčasnosti webovú stránku náročnú na server, možno budete chcieť spustiť určité procesy, ako je obohatenie údajov alebo generovanie miniatúr na pozadí, bez zasahovania do používateľského rozhrania. Linux crontab má dobrý program, ktorý presne robí toto: Cron.

Úvod do Cron

Čo je tento program? Cron je kategorizovaný ako démon, ktorý dokáže vykonávať naplánované príkazy. Spustí sa automaticky pri vstupe do viacúrovňových úrovní spustenia z /etc/init.d. V oblasti / var / spool / cron / crontabs vyhľadáva oblasti spoolových súborov súbory crontab pomenované podľa účtov v adresári / etc / passwd. Na prístup k crontabs v tomto adresári musíte použiť príkaz crontab namiesto priameho prístupu k nim. Cron dokáže prečítať aj mierne odlišný formát súboru / etc / crontab, ako aj súbory v súbore /etc/cron.d.

Po nakonfigurovaní sa Cron zobudí každú minútu, skontroluje uložené linuxové crontabs a skontroluje príkaz, aby zistil, či sa má niečo vykonať. Ak sa vykoná príkaz a vygeneruje sa výstup, výstup sa pošle vlastníkovi crontabu alebo používateľovi v premennej MAILTO v crontabe. Detské kópie cronu, ktorý tieto procesy spúšťa, sú pomenované veľkými písmenami, ktoré uvidíte vo výstupe ps a syslog.

Cron tiež každú minútu kontroluje zmeny v modime adresára cievok. Ak dôjde k zmenám, potom sa preskúma súčasný stav všetkých linuxových crontabov a načíta sa ten, ktorý sa zmenil. V dôsledku toho sa cron nemusí reštartovať, keď sa zmení crontab súbor.

Keď sa hodiny zmenia o tri hodiny alebo menej, existujú osobitné úvahy, napríklad na začiatku a na konci letného času. Ak sa čas posunie vpred, úlohy, ktoré sa majú spustiť v preskočenom čase, sa upravia tak, aby sa spustili čoskoro po zmene. Na druhú stranu, ak sa čas posunie späť, úlohy, ktoré padnú v opakovanom čase, sa znova nespustia.

Ovplyvnené sú iba úlohy, ktoré sa spúšťajú skôr v konkrétnom čase ako hodinové úlohy, alebo tie, ktoré sú označené „*“ v špecifikátore minúty / hodiny. Úlohy zadané divokými automobilmi sa okamžite vychádzajú z nového času. V prípade zmeny hodín o viac ako tri hodiny sa nový čas okamžite použije.

V programoch Red Hat a Debian cron považuje súbory cron.d za prípony súboru cruxab v Linuxe, pretože sledujú špeciálny formát súboru, čo znamená, že zahŕňajú pole používateľa. Cieľom tejto funkcie je povoliť balíky, ktoré vyžadujú lepšiu kontrolu plánovania ako denné, mesačné alebo týždenné adresáre. Takéto súbory by sa mali v ideálnom prípade pomenovať podľa ich dodávateľských balíkov. Spisy musia byť v súlade s konvenciou pre pomenovanie používanou pre časti run-run v tom, že musia pozostávať iba z veľkých a malých písmen, číslic, spojovníkov a podčiarkovníkov. Súbory v adresári cron.d sú monitorované z hľadiska zmien, rovnako ako adresár linux crontab. V prípade príkazov typu / bin / ls nezabudnite na volanie správneho príkazu použiť absolútne názvy ciest.

Úvod do systému Linux Crontab

Teraz, keď viete o vstupoch a výstupoch cronu, pozrime sa podrobne na linux crontab, ktorý je programom na inštaláciu, odinštalovanie alebo uvedenie tabuliek, ktoré poháňajú samotného démona. Každý užívateľ môže mať svoj vlastný linuxový crontab a súbory sú k dispozícii v adresári crontabs, ale nie sú určené na priame úpravy.

Každý príkaz zadaný v linuxovom crontabe používateľa sa vykoná ako užívateľ, ktorý ho vlastní. Karty, medzery a prázdne riadky sa zvyčajne ignorujú. Riadky, ktoré majú ako prvý medzerník znak hash, sa ignorujú, pretože sa s nimi zaobchádza ako s komentármi. Je potrebné poznamenať, že komentáre nie sú povolené v rovnakých riadkoch príkazov cron, pretože sa budú čítať ako súčasť príkazu. V podobnej poznámke nie sú povolené komentáre ani v riadkoch s nastaveniami premenných prostredia.

V linuxovom crontabe je aktívny riadok s príkazom cron alebo nastavením premennej prostredia, ktorý je vo forme „name = value“, kde môžu byť podľa potreby doplnené medzery okolo znamienka rovnosti. Všetky nasledujúce nezadané medzery sú súčasťou hodnoty názvu. Reťazec hodnoty by sa mohol umiestniť do jednoduchých alebo dvojitých úvodzoviek na zachovanie koncových alebo úvodných medzier. Nie je analyzovaná na environmentálne substitúcie, takže možno zistíte, že riadky ako „PATH = $ HOME / bin: $ PATH“ nebudú fungovať podľa očakávania.

Mnoho nastavení prostredia sa automaticky nastavuje pomocou cronu, napríklad HOME a LOGNAME, ktoré sa nastavujú z prístupového riadku používateľa a SHELL sa nastavuje na / bin / sh a PATH sa nastavuje na / usr / bin: / bin. Nastavenia PATH, SHELL a HOME môžete prepísať nastavením crontab. LOGNAME sa však nedá zmeniť, pretože je to užívateľ, od ktorého je úloha spustená. V systémoch BSD sa táto premenná môže nazývať USER, v takom prípade sa tiež nastaví USER.

Ak je odosielanie e-mailov súčasťou príkazov spustených v linuxovom crontabe, cron sa tiež pozrie na MAILTO. Ak je premenná definovaná a neprázdna, menovaný používateľ sa pošle e-mail. Ak je však prázdna, neodošle sa žiadna pošta a namiesto toho sa pošle pošta majiteľovi linuxového crontabu. Ak je súbor cron.allow k dispozícii, musíte byť v ňom uvedený, aby ste mohli používať tento príkaz. Ak tento súbor neexistuje, ale existuje súbor cron.deny, mali by ste sa z tohto súboru odstrániť, aby ste mohli použiť príkaz. Ak ani jeden súbor neexistuje, príkaz bude môcť použiť iba super užívateľ v závislosti od parametrov závislých od lokality. Prípadne všetci používatelia budú môcť použiť príkaz, čo je prípad štandardných systémov Debian.

Ak je k dispozícii voľba –u, udáva meno používateľa, ktorého linuxový crontab vyžaduje vyladenie. Ak nie je zadaný, crontab preskúma crontab používateľa vykonávajúceho príkaz. Je dôležité používať túto možnosť vždy kvôli bezpečnosti pri behu vo vnútri su, pretože linux crontab môže byť zamenený su. Voľba -l je k dispozícii pre aktuálny crontab, ktorý sa má zobraziť na štandardnom výstupe, zatiaľ čo voľba -r odstráni aktuálny crontab. Príkaz -e sa používa na úpravu aktuálneho linuxového crontabu pomocou editorov špecifikovaných environmentálnymi premennými EDITOR alebo VISUAL. Nemôžete použiť žiadny editor, ktorý odpojí a znovu vytvorí súbor; potrebujete editor, ktorý upraví súbor na mieste. Po ukončení editora sa vyladený linuxový crontab automaticky nainštaluje.

Modul pam_env je tiež podporovaný programom cron v systéme Debian GNU / Linux, ktorý načíta prostredie špecifikované v súbore modulu. Malo by sa však poznamenať, že nastavenie PAM neprepíše vyššie uvedené nastavenia ani nastavenie súboru crontab. Ak chcete PATH odlišnú od umiestnenia v koši, musíte ju nastaviť v súbore crontab. Cron v predvolenom nastavení odosiela e-maily pomocou typu obsahu „text / plain“ s nastavenou sadou parametrov do sady kódov / znakov mapy miestneho nastavenia, kde sa spustil cron, čo je predvolené miestne nastavenie systému bez akejkoľvek sady premenných prostredia. alebo miestne nastavenie premenných. Pre výstup pošty môžete pridať vlastné kódovanie znakov tak, že v crontabs nastavíte premenné 'Content_Transfer_Encoding' a 'Content_Type' tak, aby zodpovedali hlavičkám e-mailov s názvami.

Odporúčané kurzy

  • Online kurz R Studio Anova Techniques
  • Certifikačné školenie v AngularJS
  • ISTQB certifikačný kurz úrovne 1
  • Certifikačné školenie v základoch testovania softvéru

Práca na Crontabe

Príkaz crontab, ktorý sa nachádza v operačných systémoch typu Unix a Unix, je dostupný prostredníctvom terminálu. Ak chcete vidieť, čo crontab práve beží, otvorte terminál vo vašom systéme a spustite nasledujúci príkaz:

$ sudo crontab -l

Na úpravu zoznamov úloh crontab môžete použiť nasledujúci príkaz:

$ sudo crontab -e

Tento príkaz otvorí predvolený editor vo vašom systéme, ktorý môže byť pico alebo vio, na zmenu crontab. Ak chcete úlohu crontab uložiť do súboru crontab, uložte a ukončite editor. Crontab úlohy alebo cronjobs možno písať takto:

* * * * * /bin/execute/this/script.sh

Vo vyššie uvedenom príkaze je päť hviezdičiek, z ktorých každá predstavuje rôzne časti dátumu na naplánovanie úlohy. Tu sú:

  1. Minúta od 0 do 59
  2. Hodina v rozsahu od 0 do 23
  3. Deň v mesiaci od 1 do 31
  4. Mesiac v rozmedzí od jedného do 12
  5. Deň v týždni, od nuly do šiestich, s nulou, čo znamená nedeľa

Vyššie uvedený zoznam je uvedený v poradí, takže musíte najskôr definovať minútu, potom hodinu, deň v mesiaci, mesiac a deň v týždni. Hviezdičku môžete ponechať, ak nechcete definovať žiadne z polí, ale je dôležité si uvedomiť, že symbol znamená „všetko“. Ak necháte všetkých päť polí nedefinovaných s hviezdičkami neporušené, znamená to každú minútu každej hodiny, každý deň každý týždeň a každý mesiac.

Teraz predpokladajme, že chcete v nedeľu len spustiť skript každé poludnie, tu je to, čo robíte:

0 12 * * 0 /bin/execute/this/script.sh

Teraz je skript spustený, keď systémové hodiny zasiahnu 1200 hodín každú nedeľu, každý týždeň v mesiaci. Ak teraz chcete spustiť skript každý pracovný deň o 12.00, napíšete toto:

0 12 * * 1-5 /bin/execute/this/script.sh

Cron vykoná príkazy, keď sa polia rok, mesiac, hodina a minúta zhodujú s aktuálnym časom, alebo keď sa aspoň deň v mesiaci a roku zhoduje s aktuálnym časom. Pole môže byť označené hviezdičkou, ktorá označuje „first-last“. Povolené sú číselné rozsahy, pričom rozsahy sú dve čísla oddelené spojovníkom. Konkrétny rozsah je zahrnutý, takže rozsah 8 - 11 pre „hodiny“ určuje vykonanie v ôsmej, deviatej, desiatej a jedenástej hodine. Zoznamy sú tiež podporované, pričom každé číslo je oddelené čiarkami, napríklad „1, 2, 8, 9“. Môžete kombinovať aj zápasy, takže to môže byť '1, 2, 8-11'.

Hodnoty stupňov môžete použiť v spojení s rozsahmi, pričom „/“ za rozsahom určuje preskočenie hodnoty čísla v rozsahu. Napríklad „0-11 / 2“ v poli hodín špecifikuje vykonanie príkazu každú ďalšiu hodinu, ktorá by sa mala zapísať ako zoznam: „0, 2, 4, 6, 8, 10“. Po hviezdičke je možné povoliť kroky, napríklad „* / 2“, ktoré označujú príkaz, ktorý sa má vykonať každé dve hodiny. Pre polia pre deň a mesiac môžete použiť prvé tri písmená daného dňa alebo mesiaca a na prípade nezáleží. Zoznamy a rozsahy mien však nie sú podporované. Deň vykonania možno určiť v dvoch poliach: deň v týždni a deň v mesiaci. Ak sú obe polia obmedzené, príkaz sa spustí, keď sa zhoduje ktorékoľvek pole.

Zvyšok riadku je pole „šieste“, ktoré určuje príkaz, ktorý sa má spustiť. Príkazová časť riadku zaberá nový riadok alebo až% znak. Vykonáva ho sh alebo určený shell v premennej SHELL súboru crontab. % V príkaze sa zmení na znaky nového riadku, pokiaľ nie sú uviaznuté lomkou „\“. Všetky dáta po prvom znaku% sa odosielajú ako štandardný vstup do príkazu. Nemôžete rozdeliť jeden príkazový riadok do viacerých riadkov.

Plánovanie trikov na Crontabe

Formátovanie si môže zvyknúť, ale tu je niekoľko trikov, ktoré vám pomôžu. Ak chcete spustiť službu cronjob každých desať minút, môžete to napísať takto:

0, 10, 20, 30, 40, 50 * * * * /bin/execute/this/script.sh

Alebo to môžete napísať jednoduchšie:

* / 10 * * * * /bin/execute/this/script.sh

Máte tiež špeciálne slová, ktoré môžete pridať do poľa prvej minúty namiesto čísla, napríklad:

  • @reboot: skript sa spustí pri štarte systému
  • @rok: spustiť príkaz raz ročne (alternatívny formát by bol „0 0 1 1 *“)
  • @ ročne: alternatíva k ročnému kľúčovému slovu
  • @mesiac: spustiť príkaz raz mesačne („0 0 1 * *“)
  • @týždenne: spustiť raz týždenne („0 0 * * 0“)
  • @denne: spustiť raz týždenne („0 0 * * *“)
  • @midnight: alternatíva k dennému kľúčovému slovu
  • @hourly: spustiť každú hodinu („0 * * * *“)

Výstupné úložisko

V predvolenom nastavení cron uloží výstup úlohy do poštovej schránky používateľa alebo do koreňového adresára. Výstup však môžete zjednodušiť a prezentovať jeho uložením do samostatného súboru denníka. Takto to robíte:

* / 10 * * * * /bin/execute/this/script.sh >> /var/log/script_output.log 2> & 1

Linux je schopný reportovať na rôznych úrovniach. Máte štandardné chyby STDERR a štandardný výstup STDOUT, označené ako 2 a 1. Nasledujúci príkaz hovorí, aby sa uložili STDERR aj STDOUT, aby sa vytvoril jediný dátový tok správ a chýb:

2> & 1

Takže sme definovali výstupný tok, teraz mu musíme dať cieľ. Písmeno „>“ prepíše súbor a pripojí sa k nemu „>>“. Na pripojenie, ktoré je vždy bezpečnejšie, môžete použiť nasledujúci príkaz:

>> /var/log/script_output.log

záver

Ako vidíte, cron vám umožňuje nastaviť úlohy tak, aby sa automaticky spúšťali v pravidelných intervaloch na pozadí. To umožňuje automatizované vytváranie záloh, plánovanie aktualizácií, synchronizáciu súborov a mnoho ďalšieho. To všetko a ešte viac môžete robiť s crontabom.

Odporúčané články: -

Tu je niekoľko článkov, ktoré vám pomôžu získať viac podrobností o systéme Linux Crontab, takže stačí prejsť na odkaz.

  1. Linux Rozhovor Otázky a odpovede Užitočné a najčastejšie otázky
  2. Kariéra v Linuxe
  3. Top 10 užitočných linuxových aplikácií pre správcov systému
  4. Linux verzus Windows 10

Kategórie: