Ako naplánovať úlohy v systéme Linux pomocou Cron a Crontab

Ako naplánovať úlohy v systéme Linux pomocou Cron a Crontab

Vedeli ste, že Blade Runner je stanovená v roku 2019? To sú už tri roky! Nehovoriac o Návrat do budúcnosti 2 , kde cestujú časom vpred do roku 2015. Napriek tomu nemáme lietajúce autá a nie sú medzi nami ani replikanti (pokiaľ viem).





Je ľahké cítiť sa sklamaný súčasnou technológiou, keď ju porovnáme s fiktívnymi zobrazeniami budúcnosti. Napriek tomu v dnešnej dobe naše telefóny, počítače a dokonca aj domy dokážu úžasné veci. Schopnosť automatizovať úlohy je jednou z nich.





Každý používateľ Linuxu môže mať prospech z plánovania úloh, či už súvisí so systémom (napríklad čistenie starých protokolov a aktualizácia balíkov ) alebo obsluhovaním používateľa (kontrola e -mailu, sťahovanie podcastov ...). Používatelia systému Windows majú Plánovač úloh od systému Windows 95. Nástroj, ktorý vykonáva rovnakú úlohu v systéme Linux, sa nazýva cron a tu vysvetlíme, ako ho používať.





ako pridať aplikáciu do inteligentnej televízie vizio

Čo je Cron?

Cron je systémová služba, ktorá beží na pozadí, kontroluje naplánované úlohy a ak ich nájde, vykoná ich. Úlohy - nazývané aj „úlohy cron“ - sú definované v špeciálnych konfiguračných súboroch (crontabs), ktoré cron skenuje každú minútu. V rôznych distribúciách Linuxu možno nájsť niekoľko verzií cron. Nazýva sa napríklad Fedorova vidlica cron cronie , a existujú tiež fcron , bcron a dcron . Niektoré majú ďalšie funkcie, zatiaľ čo iné sú zamerané viac na bezpečnosť, ale všetky sú založené na rovnakej myšlienke.

Táto príručka je napísaná pre vixie-cron, čo je najrozšírenejšia verzia cronu a verzia, ktorú nájdete v Ubuntu a jeho derivátoch. Aj keď sa väčšina pokynov vzťahuje aj na iné implementácie cron, môžu existovať malé rozdiely, preto si prečítajte ich manuály, ak sa rozhodnete prejsť.



Čo je to Crontab?

Ak to so správou svojho času myslíte vážne, pravdepodobne máte nejaký kalendár - aplikáciu alebo aspoň kus papiera. Crontab je veľmi podobný kalendáru vášho počítača. Obsahuje informácie o naplánovaných úlohách a hovorí cronu, ktoré príkazy sa majú kedy spustiť.

V skutočnosti je vo vašom systéme niekoľko crontabov. Každý používateľ má svoj vlastný crontab vrátane root (správca). Crontaby užívateľov sú uložené v





/var/spool/cron/crontabs/

. The

crontab -l

príkaz vypíše súbor crontab pre aktuálneho používateľa. Koreňový crontab môžete skontrolovať pomocou





sudo crontab -l

.

Okrem toho je tu systémový súbor crontab

/etc/crontab

ktorý sa používa na úlohy celého systému. Obvykle majú formu spustiteľných skriptov vo vlastníctve root, ktoré sú umiestnené v

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

a

/etc/cron.monthly/

priečinkov a pri niektorých distribúciách súbor

/etc/cron.d/

priečinok tiež. Vo všeobecnosti by ste sa týmito úlohami nemali zaoberať, pretože väčšinu z nich automaticky vytvoria nainštalované aplikácie.

Ako naplánovať úlohy pomocou Cron

Znie to jednoducho: Ak chcete naplánovať úlohy, jednoducho ich pridajte do svojho crontabu. Pretože crontab je špeciálny konfiguračný súbor, neodporúča sa ho upravovať ručne. Namiesto toho použite príponu

crontab -e

príkaz. Ak chcete upraviť crontabs root alebo iných používateľov, spustite príkaz s oprávneniami správcu a pridajte jeho používateľské meno za možnosť -u:

sudo crontab -u root -e
sudo crontab -u username -e

Súbor crontab má dve sekcie. Prvá obsahuje premenné prostredia, ktoré sa nastavujú automaticky. Môžete bezpečne zmeniť premenné PATH, HOME a SHELL a upraviť premennú MAIL.

Druhá časť súboru je skutočný „rozvrh“ s vašimi naplánovanými úlohami. Každá úloha zaberá v tabuľke riadok (riadok) so stĺpcami predstavujúcimi nasledujúce hodnoty:

Na úspešné naplánovanie úloh je potrebné vedieť niečo o syntaxi crontab:

  • Čísla by mali byť celé čísla (celé čísla) a hviezdičku (*) môžete použiť v ľubovoľnom stĺpci ako zástupný znak, čo znamená „každú minútu/deň/mesiac ...“.
  • V stĺpci „Deň mesiaca“ dávajte pozor, aby ste nenastavili dátum, ktorý sa nevyskytuje v mesiaci uvedenom v stĺpci „Mesiac“ (napríklad 30. februára).
  • V stĺpcoch „Mesiac“ a „Deň v týždni“ sa používajú krátke názvy pre mesiace a dni a nerozlišujú sa malé a veľké písmená.
  • V stĺpci „Deň v týždni“ 0 a 7 znamenajú nedeľu. Stĺpec „Hodina“ vyžaduje formát „vojenský čas“ (24-hodinový), ale nemôžete použiť číslo 24-namiesto toho 0 znamená 12:00 Dôvodom je, že hodnoty pre minútu, hodinu a deň v týždni začínajú na 0 namiesto 1.
  • Sekundy nie sú podporované, takže nemôžete naplánovať úlohu na konkrétnu sekundu.

Čo môžete urobiť, je naplánovať inkluzívne časové rozsahy pomocou spojovníka (14-22 v časti „Hodiny“ bude úlohu vykonávať nepretržite od 14:00 do 22:00) alebo môžete spustiť jednu úlohu niekoľkokrát definovaním zoznamu oddeleného čiarkami (1, 3,5 v časti „Deň v týždni“ spustí úlohu v pondelok, stredu a piatok).

Medzitým sú krokové hodnoty reprezentované lomítkom (/) a tieto udávajú množstvo preskočení v rámci rozsahu; napríklad 3-20/3 v rámci „hodín“ bude úloha vykonávať každé tri hodiny od 3:00 do 20:00. Je to užitočné, keď chcete opakovať úlohy každých X hodín, pretože môžete kombinovať hviezdičku a krok (*/X). Rozsahy môžete kombinovať so zoznamami a kroky s rozsahmi, pokiaľ používate čísla. Inými slovami, kombinácie ako „jan-mar“ alebo „Ut, Pi-Ne“ nie sú povolené.

Alternatívne namiesto nastavenia hodnoty pre každý stĺpec môžete na začiatku riadka napísať iba @týždeň, @rok, @mesiac, @denne alebo @hodinu, za ktorou nasleduje príkaz. Takto naplánované úlohy budú prebiehať v prvom možnom prípade, takže @týždeň sa spustí o polnoci v prvý deň týždňa. Ak chcete spustiť úlohu ihneď po spustení systému (re), použite príkaz @reboot.

V tomto prípade sme naplánovali zálohovanie každý deň na 08:20 a 20:20. Tapeta sa automaticky mení každé tri dni o 19:00 a skript bude kontrolovať nové podcasty každý pondelok o 10:20 a 20:20. Pripomienka narodenín je stanovená na 25. marca a prebieha každých 30 minút v uvedenom časovom rámci. Skript nakoniec kontroluje e -maily každých 15 minút od 8 do 20, ale iba v pracovné dni. Crontab môžete slobodne organizovať pomocou medzier a tabulátorov medzi stĺpcami, ale nie v rámci nich (medzery medzi čiarky, spojovníky a lomky nevkladajte).

Ak sa vám to všetko zdá príliš komplikované, nebojte sa - na internet sa môžete vždy spoľahnúť. Nástroje ako Crontab generátor , Crontab.guru , a Corntab vám pomôžu vytvoriť úlohy cron bez znalosti akejkoľvek syntaxe crontab. Ukazujú vám, kedy sa úloha spustí ďalej, a poskytujú šablóny pre bežne používané výrazy. Crontab.guru je najlepší zo skupiny, pretože vám umožňuje naživo testovať syntax crontabu, takže môžete okamžite vidieť, ako vaše zmeny ovplyvnia rozvrh.

Ako skontrolovať, či sú úlohy Cron vykonávané

Cron má bežať potichu na pozadí a nechať vás nerušene pracovať, kým sa stará o vaše úlohy. Ako sa však môžete uistiť, že skutočne funguje?

Cron má vstavanú funkciu e-mailových upozornení, ale to si vyžaduje nastavenie aspoň jednoduchého lokálneho poštového servera. Nie veľa domácich používateľov je ochotných to nakonfigurovať a len málo distribúcií to predvolene poskytuje (napríklad Ubuntu nie). Najrýchlejší spôsob, ako sa skontrolovať na cron, je skenovať systémový denník pomocou tohto príkazu:

cat /var/log/syslog | grep -i cron

Vďaka možnosti -i náš dotaz nerozlišuje malé a veľké písmená. Je možné, že cron bude mať svoj vlastný súbor denníka niekde v

/var/log/

, pozrite sa tam, ak tento príkaz neprinesie užitočné výsledky.

Ak potrebujete uložiť výstup konkrétnej úlohy cron, môžete ju presmerovať do súboru. Zadajte cestu a názov súboru v poslednom stĺpci crontab za príkazom, ktorý chcete spustiť:

30 * * * * /usr/bin/yourcommand > /home/username/logfile.txt

Použitie jediného symbolu> prepíše súbor pri každom spustení príkazu. Aby ste tomu zabránili, použite namiesto toho >> - pripojí výstup k existujúcemu súboru.

Čo keď Cron nefunguje?

Môže sa stať, že ste pridali niektoré úlohy, skontrolovali systémové denníky a zistili ste, že sa nevykonávajú tak, ako by mali. Tu je niekoľko vecí, ktoré by ste mali pri pokuse o vyriešenie problému zvážiť - a dávať na ne pozor.

Je služba cron spustená?

Ako viete, démon cron by mal bežať na pozadí. Uistite sa, že je to skutočne tak. Táto služba sa nazýva crond alebo len cron.

Pre distribúcie používajúce systemd:

systemctl status cron

Distribúcie pomocou programu Upstart:

service cron status

Ak vaša distribúcia používa „starý“ inicializačný prístup systému V, uveďte všetky služby pomocou:

ako vedieť, že vás niekto zablokoval na snapchate
initctl list

a zistite, či je uvedený cron.

Máte dokonca dovolené mať súbor crontab?

Skontroluj svoje

/etc

priečinok pre súbory s názvom

cron.allow

a

cron.deny

. V systéme Ubuntu by nemal existovať ani jeden, čo znamená, že všetci používatelia môžu spravovať úlohy cron. Ak však existuje a

ako vyčistiť ventilátor ps4 bez toho, aby ste ho rozobrali
cron.allow

súbor, musí obsahovať vaše používateľské meno. Naopak, ak

cron.deny

súbor existuje, nemalo by v ňom byť vaše používateľské meno. Odchod z

cron.deny

prázdny súbor znamená, že iba root a používatelia uvedení v priečinku

cron.allow

môže mať súbory crontab.

Sú vaše premenné správne nastavené?

Crontab automaticky nastaví vašu premennú SHELL na

/bin/sh

. Ak však vašou vybranou škrupinou sú ryby alebo bash, mali by ste zmeniť premennú SHELL

. Podobne premenná PATH obsahuje predvolene iba niekoľko adresárov. Tu crontab hľadá príkazy Linuxu. Ak sa vám úloha cron nedarí spustiť, môže to byť spôsobené tým, že crontab „nevidí“ príkaz, ktorý ste použili. Aby ste tomu zabránili, pridajte do premennej PATH adresáre obsahujúce príkazy oddelené dvojbodkami:

PATH =/opt/myapp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Ak to nechcete upravovať vo svojom crontab, môžete tieto premenné definovať v skripte, ktorý chcete spustiť ako úlohu cron.

Je vaše formátovanie crontab na mieste?

Syntax Crontabu nie je práve plynulá. Aj keď to overíte pomocou vyššie uvedených online nástrojov, drobná chyba môže stále zabrániť spoločnosti cron vo vykonávaní vašich úloh. Dávajte si pozor na:

  • pridajte prázdny riadok na koniec súboru crontab
  • uniknite zo znaku % so spätným lomítkom, ak ho váš príkaz obsahuje
  • píšte komentáre ako samostatné riadky začínajúce na #. Nepíšte komentáre na rovnaký riadok ako premenné prostredia alebo vedľa príkazov cron job.

Naozaj musíte používať terminál?

Rozhodne nie. Používatelia KDE môžu naplánovať úlohy cron pomocou KCron, ktorý je prístupný z Systémové nastavenia> Plánovač úloh modul. Vďaka jednoduchému rozhraniu, ktoré vám umožní vybrať a vyladiť všetko pomocou niekoľkých kliknutí myšou, je KCron radosť používať.

Ak dávate prednosť GNOME, potom Rozpis GNOME je pre teba. Prístup je podobný, aj keď sa rozhranie, podľa očakávania, mierne líši. Ponúka pokročilý režim pre jemné úpravy a je dodávaný s panelovým apletom, z ktorého môžete priamo spravovať úlohy.

Mali by ste si byť vedomí ďalších riešení, ako napr Crontab-UI a Minicron . Sú vhodnejšie pre používateľov, ktorí spravujú viac počítačov a úlohy cron, a jednou z ich najlepších funkcií je webové rozhranie.

Existujú nejaké alternatívy Cron?

Aj keď je cron do značnej miery štandardným plánovačom úloh pre Linux, určite nie je jediný. The na povel je ideálny pre rýchle a jednorazové úlohy, ktoré je možné naplánovať priamo z príkazového riadka bez špeciálnych konfiguračných súborov. Ak potrebujete viac, existuje GNUbatch , ktorý zavádza pojem závislosť. V GNUbatch môžete pre každú úlohu nastaviť konkrétne podmienky alebo naplánovanú úlohu závisieť od predchádzajúcej. Niečo podobné sa dá dosiahnuť pomocou systemd Timers . Napriek tomu, že konfigurácia časovačov je menej praktická ako cron, systémové časovače si dokážu zapamätať, či niektorá úloha zmeškala plán, keď bol počítač vypnutý, a spustiť ju pri ďalšom zapnutí.

To je niečo, čo cron nemôže urobiť sám. Ako taký je vhodný pre servery a počítače, ktoré sú neustále spustené, ale nevykoná úlohu, ktorá bola naplánovaná, keď bol počítač vypnutý. Toto je kde anacron vstupuje do hry. Technicky to nie je „alternatíva“ ani náhrada za cron. Namiesto toho anacron dopĺňa cron a mal by sa používať spolu s ním, čo je prípad mnohých distribúcií Linuxu, vrátane produktov založených na Ubuntu a Ubuntu. Anacron zaznamenáva, kedy bola úloha naposledy vykonaná, a kontroluje, či nedošlo k zmeškaným inštanciám, keď bol systém vypnutý. Spustí ich, keď znova zapnete počítač, ale každú úlohu je možné vykonať iba raz za deň.

Niektoré verzie programu cron, ako napríklad fcron, štandardne ponúkajú funkcie anacronu. Pokročilí používatelia sa môžu chcieť pozrieť Hcron alebo SuperCron , ktoré prinášajú mnoho vylepšení základných funkcií cron, ale ich správa je tiež trochu náročná.

A čo ty? Ako organizujete svoje digitálne úlohy? Aké úlohy plánujete v systéme Linux? Podeľte sa o svoje príbehy a tipy na používanie cronu v komentároch.

Kredit na obrázok: rozvrhová tabuľa od Gonzala Aragona cez Shutterstock

zdieľam zdieľam Tweet E -mail 12 webových stránok s videami, ktoré sú lepšie ako YouTube

Tu je niekoľko alternatívnych stránok s videami k serveru YouTube. Každý z nich zaberá iný priestor, ale oplatí sa pridať do vašich záložiek.

Čítajte ďalej
Súvisiace témy
  • Linux
  • Linux
O autorovi Ivana Isadora Devcic(24 publikovaných článkov)

Ivana Isadora je nezávislá spisovateľka a prekladateľka, milovníčka Linuxu a fanynka KDE. Podporuje a propaguje bezplatný a open source softvér a vždy hľadá nové, inovatívne aplikácie. Zistite, ako sa dostať do kontaktu tu .

Viac od Ivany Isadory Devcic

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber