Crontab - Pokud máte v současné době webovou stránku těžkou pro server, možná budete chtít spouštět určité procesy, jako je obohacení dat nebo generování miniatur na pozadí, aniž byste zasahovali do uživatelského rozhraní. Linux crontab má dobrý program, který přesně dělá: Cron.

Úvod do Cron

Co je tento program? Cron je kategorizován jako démon, který umí provádět naplánované příkazy. Automaticky se spustí při zadávání víceuživatelských úrovní běhu z /etc/init.d. Prohledává oblast pro zařazování v adresáři / var / spool / cron / crontabs pro soubory crontab pojmenované podle účtů v / etc / passwd. Chcete-li získat přístup k crontabs v tomto adresáři, musíte místo přímého přístupu použít příkaz crontab. Cron umí také číst mírně odlišný formát / etc / crontab a také soubory v /etc/cron.d.

Jakmile je Cron nakonfigurován, probudí se každou minutu, prozkoumá uložené linuxové crontabs a zkontroluje příkaz, zda není co provést. Pokud je příkaz proveden a je generován výstup, je výstup zaslán majiteli crontabu nebo uživateli v proměnné MAILTO v crontabu. Podřízené kopie cronu, který tyto procesy spouští, jsou pojmenovány velkými písmeny, které uvidíte ve výstupu ps a syslog.

Cron také každou minutu kontroluje změny v modtime adresáři pro zařazování. Pokud dojde ke změnám, prozkoumá modtime všech linuxových crontabů a znovu načte ty, které se změnily. V důsledku toho se cron nemusí restartovat, když se změní crontab soubor.

Když se hodiny změní o tři hodiny nebo méně, existují zvláštní úvahy, jako na začátku a na konci letního času. Pokud se čas posunul dopředu, úlohy, které se mají spustit v přeskočeném čase, se změní tak, aby byly spuštěny brzy po změně. Na druhé straně, pokud se čas posune zpět, nebudou úlohy, které se opakují, opakovány.

Ovlivněny jsou pouze úlohy, které se spouští v určitém čase, nikoli hodinové, nebo ty, které jsou označeny '*' v specifikátoru minut / hod. Úlohy zadané divokými auty jsou okamžitě spuštěny na základě nového času. V případě změny hodin o více než tři hodiny se nový čas použije okamžitě.

V Red Hat a Debian cron zachází se soubory cron.d jako s příponou souboru linux crontab, protože sledují speciální formát souboru, což znamená, že zahrnují uživatelské pole. Cílem této funkce je umožnit balíčky, které vyžadují jemnější plánování, než denní, měsíční nebo týdenní adresáře. Tyto soubory by v ideálním případě měly být pojmenovány podle jejich dodavatelských balíčků. Soubory musí odpovídat konvenci pro pojmenování používané pro run-parts, v tom, že musí obsahovat pouze velká a malá písmena, číslice, spojovníky a podtržítka. Soubory v adresáři cron.d jsou sledovány z hlediska změn, stejně jako adresář linux crontab. U příkazů typu / bin / ls nezapomeňte použít správný příkaz pomocí absolutních názvů cest.

Úvod do Linux Crontab

Nyní, když znáte vstupy a výstupy cronu, pojďme se blíže podívat na linux crontab, což je program pro instalaci, odinstalaci nebo výpis tabulek pro řízení samotného démona. Každý uživatel může mít svůj vlastní linuxový crontab a soubory jsou k dispozici v adresáři crontabs, ale nejsou určeny pro přímou editaci.

Jakýkoli příkaz daný v linuxovém crontabu uživatele bude proveden jako uživatel, který je vlastníkem. Karty, mezery a prázdné řádky jsou obvykle ignorovány. Řádky, které mají znak hash jako první znak bez mezer, jsou ignorovány, protože jsou považovány za komentáře. Je třeba poznamenat, že komentáře nejsou povoleny ve stejných řádcích příkazů cron, protože budou čteny jako součást příkazu. V podobné poznámce nejsou komentáře povoleny ani na řádcích s nastavením proměnné prostředí.

V linuxovém crontabu je aktivní řádek s příkazem cron nebo nastavením proměnné prostředí, který je ve tvaru „name = value“, kde lze v případě potřeby přidat kolem znaménka rovná se mezery. Všechny následující nevstupující mezery jsou součástí hodnoty názvu. Řetězec hodnoty by mohl být umístěn do jednoduchých nebo dvojitých uvozovek pro zachování koncových nebo úvodních mezer. Není analyzován pro substituce prostředí, takže můžete zjistit, že řádky jako „PATH = $ HOME / bin: $ PATH“ nebudou fungovat podle očekávání.

Mnoho nastavení prostředí je automaticky nastaveno pomocí cronu, jako je HOME a LOGNAME, které jsou nastaveny z passwd linky uživatele a SHELL je nastaveno na / bin / sh a PATH je nastaveno na / usr / bin: / bin. Můžete potlačit PATH, SHELL a HOME nastavením crontabu. LOGNAME však nelze změnit, protože je to uživatel, od kterého je úloha spuštěna. V systémech BSD může být tato proměnná nazývána USER, v tomto případě bude také nastavena USER.

Pokud je odesílání e-mailů součástí příkazů spuštěných v linuxovém crontabu, cron se také podívá na MAILTO. Pokud je proměnná definována a není prázdná, je odeslaná pošta pojmenovanému uživateli. Pokud je však prázdný, není odeslána žádná pošta a místo toho je odeslána majiteli linuxového crontabu. Pokud je soubor cron.allow k dispozici, musíte být v něm pro použití tohoto příkazu uveden. Pokud tento soubor neexistuje, ale existuje soubor cron.deny, měli byste být z tohoto souboru odstraněni, abyste mohli příkaz použít. Pokud žádný soubor neexistuje, bude moci příkaz použít pouze super uživatel v závislosti na parametrech závislých na webu. Případně budou moci všichni uživatelé použít příkaz, což je případ standardních systémů Debian.

Je-li k dispozici volba –u, dává uživatelské jméno, jehož linuxový crontab vyžaduje vyladění. Pokud není zadán, crontab prozkoumá crontab uživatele provádějícího příkaz. Je důležité používat tuto možnost vždy kvůli bezpečnosti při běhu uvnitř su, protože linux crontab může být zmaten su. Možnost -l je k dispozici pro aktuální crontab, který se má zobrazit na standardním výstupu, zatímco volba -r odebere aktuální crontab. Příkaz -e se používá k úpravě současného linuxového crontabu pomocí editorů určených proměnnými prostředí EDITOR nebo VISUAL. Nelze použít žádný editor, který odpojí a znovu vytvoří soubor; potřebujete editor, který upraví soubor na místě. Po ukončení editoru bude automaticky nainstalován vylepšený linuxový crontab.

Modul pam_env je také podporován programem cron v systému Debian GNU / Linux a načítá prostředí tak, jak je uvedeno v souboru modulu. Je však třeba poznamenat, že nastavení PAM nenahradí výše uvedená nastavení ani nastavení souboru crontab. Pokud chcete jinou cestu než umístění v koši, musíte ji nastavit v souboru crontab. Cron bude ve výchozím nastavení odesílat e-maily pomocí typu obsahu „text / prostý“ s nastavenou sadou parametrů do sady kódů / znaků v národním prostředí, kde byl spuštěn cron, což je výchozí národní prostředí bez sady proměnných prostředí. nebo národní prostředí, které proměnné nastavují. Pro výstup pošty můžete přidat vlastní kódování znaků nastavením proměnných „Content_Transfer_Encoding“ a „Content_Type“ v crontabs tak, aby odpovídaly záhlavím jmen jmen.

Doporučené kurzy

  • Online kurz R Studio Anova Techniques
  • Certifikační školení v AngularJS
  • Certifikační kurz ISTQB úrovně 1
  • Certifikační školení v základech testování softwaru

Práce na Crontabu

Příkaz crontab, který se nachází v operačních systémech typu Unix a Unix, je přístupný prostřednictvím terminálu. Chcete-li zjistit, co crontab aktuálně běží, otevřete terminál ve vašem systému a spusťte následující příkaz:

$ sudo crontab -l

Chcete-li upravit seznamy úloh crontab, můžete použít následující příkaz:

$ sudo crontab -e

Tento příkaz otevře výchozí editor ve vašem systému, který může být pico nebo vio, pro změnu crontab. Chcete-li úlohu crontab uložit do souboru crontab, uložte a ukončete editor. Crontab úlohy nebo cronjobs lze psát takto:

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

Ve výše uvedeném příkazu je pět hvězdiček, z nichž každá představuje různé části data pro naplánování úlohy. Zde jsou:

  1. Minuta v rozmezí od nuly do 59
  2. Hodina v rozsahu od nuly do 23
  3. Den v měsíci od 1 do 31
  4. Měsíc, v rozmezí od jednoho do 12
  5. Den v týdnu, od nuly do šesti, s nulovým významem neděle

Výše uvedený seznam byl uveden v pořadí, takže musíte nejprve definovat minutu, poté hodinu, den v měsíci, měsíc a den v týdnu. Hvězdu si můžete ponechat, pokud nechcete definovat žádné pole, ale je důležité si uvědomit, že symbol znamená „každý“. Pokud necháte všech pět polí nedefinovaných s hvězdičkami neporušené, znamená to každou minutu každou hodinu, každý den každého týdne a každý měsíc.

Předpokládejme, že chcete v neděli každou hodinu spouštět skript, tady je to, co děláte:

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

Nyní je skript spuštěn, když systémové hodiny zasáhnou 1200 hodin každou neděli, každý týden v měsíci. Nyní, pokud chcete spustit skript každý pracovní den ve 12:00, píšete toto:

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

Cron provede příkazy, když se pole roku, měsíce, hodiny a minuty shodují s aktuálním časem, nebo když se alespoň den v měsíci a roce shodují s aktuálním časem. Pole může být označeno hvězdičkou pro označení „first-last“. Povoleny jsou rozsahy čísel, přičemž rozsahy jsou dvě čísla oddělená spojovníkem. Konkrétní rozsah je zahrnut, takže rozsah 8-11 pro „hodiny“ určuje provedení v osmé, deváté, desáté a jedenácté hodině. Seznamy jsou také podporovány, přičemž každé číslo je odděleno čárkami, například „1, 2, 8, 9“. Můžete také kombinovat, takže to může být '1, 2, 8-11'.

Hodnoty kroku můžete použít ve spojení s rozsahy, s '/' za rozsahem určujícím přeskočení hodnoty čísla v rozsahu. Například „0-11 / 2“ v poli hodiny určuje provedení příkazu každou druhou hodinu, která by byla zapsána jako seznam: „0, 2, 4, 6, 8, 10“. Kroky lze povolit za hvězdičkou, například „* / 2“, které označují příkaz, který má být proveden každé dvě hodiny. Pro pole den a měsíc můžete použít první tři písmena daného konkrétního dne nebo měsíce a na případu nezáleží. Seznamy a rozsahy jmen však nejsou podporovány. Den provedení lze zadat ve dvou polích: den v týdnu a den v měsíci. Pokud jsou obě pole omezena, příkaz se spustí, když se shoduje kterékoli pole.

Zbytek řádku je pole „šesté“, které určuje příkaz, který má být spuštěn. Příkazová část řádku zabírá nový řádek nebo až% znak. Provádí se sh nebo zadaným shellem v proměnné SHELL souboru crontab. % V příkazu bude změněno na znaky nového řádku, pokud nejsou vynechány zpětným lomítkem '\'. Všechna data po prvním znaku% jsou odeslána jako standardní vstup do příkazu. Nelze rozdělit jeden příkazový řádek na více řádků.

Plánování triků na Crontabu

Formátování si může zvyknout, ale zde jsou některé triky, které vám pomohou. Pokud chcete spustit cronjob každých deset minut, můžete to napsat buď takto:

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

Nebo to můžete napsat takto, což je jednodušší:

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

Máte také speciální slova, která můžete přidat do pole pro první minutu místo čísla, například:

  • @reboot: skript se spustí při spuštění systému
  • @rok: spustit příkaz jednou ročně (alternativní formát by byl „0 0 1 1 *“)
  • @ ročně: alternativa k ročnímu klíčovému slovu
  • @měsíc: spustit příkaz jednou za měsíc („0 0 1 * *“)
  • @ týden: spustit jednou týdně („0 0 * * 0“)
  • @denně: spustit jednou týdně („0 0 * * *“)
  • @midnight: alternativa k dennímu klíčovému slovu
  • @hourly: spustit každou hodinu („0 * * * *“)

Výstupní úložiště

Ve výchozím nastavení cron uloží výstup úlohy do uživatelské schránky nebo root. Výstup však můžete zjednodušit a zobrazit tak, že jej uložíte do samostatného souboru protokolu. Takto to děláte:

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

Linux je schopen reportovat na různých úrovních. Máte standardní chyby STDERR a standardní výstup STDOUT, označené jako 2, respektive 1. Následující příkaz říká, že chcete uložit STDERR i STDOUT, aby se vytvořil jediný datový tok zpráv a chyb:

2> & 1

Takže jsme definovali výstupní proud, nyní mu musíme dát cíl. Soubor „>“ přepíše soubor a připojí se k němu „>>“. Pro připojení, které je vždy bezpečnější, můžete použít následující příkaz:

>> /var/log/script_output.log

Závěr

Jak vidíte, cron vám umožňuje nastavit úlohy tak, aby se automaticky spouštěly v pravidelných intervalech na pozadí. To umožňuje automatické vytváření záloh, plánování aktualizací, synchronizaci souborů a mnoho dalšího. S crontabem můžete dělat všechno a další.

Doporučené články: -

Zde je několik článků, které vám pomohou získat více podrobností o Linuxu Crontab, takže stačí projít odkaz.

  1. Linux Interview Otázky a odpovědi Užitečné a nejžádanější
  2. Kariéra v Linuxu
  3. Top 10 užitečných aplikací pro Linux pro správce systému
  4. Linux vs Windows 10

Kategorie: