Napsáno | VS |
---|---|
Operační systém | Unixový typ |
Typ |
Obslužný program UNIX ( d ) Plánování úloh počítače Daemon |
cron je program, který umožňuje uživatelům unixových systémů automaticky spouštět skripty, příkazy nebo software v předem určeném datu a čase nebo v předem definovaném cyklu.
Koncept tohoto programu vzniklo v unixových systémech v Berkeley a AT & T , a byl později racionalizovat Paul Vixie . Původní myšlenkou bylo mít službu, která se probouzí každou minutu, analyzuje sadu souborů v konkrétním adresáři a odtud určuje, zda by takové příkazy shellu měly být provedeny během této doby.
Cron je zkrácení záložky cron , samotné zkrácení c h ron o tab le, což znamená „plánovací tabulka“ (v řečtině chronos (χρόνος) znamená čas).
Toto je velmi užitečná funkce pro rutinní úlohy správy systému , ale lze ji velmi dobře použít pro cokoli jiného. Například cron může hrát ogg soubor každý den v sedm hodin kromě soboty a neděle, aby se probudil k hudbě.
cron je démon , který v počítačovém žargonu označuje program, který běží na pozadí. Služba cron ( crond ) tak čeká, dokud čas uvedený v konfiguračním souboru (nazývaný crontab ) neprovede odpovídající akci a přejde zpět do režimu spánku až do další události.
Službu cron spouští účet root , aby se mohl přizpůsobit identitě každého uživatele. Na některých unixech, pokud je zabit (pomocí příkazu kill), je automaticky restartován systémem.
crontabje název programu pod Unixem (a Linuxem ), který umožňuje editovat konfigurační tabulky programu cron . Tyto tabulky specifikují úkoly, které mají být provedeny, a jejich plán provádění, případně s periodicitou. Rozšířením často nazýváme cron (nebo úlohu cron v angličtině) jakýkoli pravidelně spuštěný úkol.
ÚkonPříkaz crontabupraví soubor týkající se uživatele. Z důvodu bezpečnosti crontabpřed aktualizací souboru zkontrolujte syntaxi. Tento soubor je umístěn ve stromové struktuře /var , například:
Takže pro uživatele rootna Debianu bude cron tabulka uložena v/var/spool/cron/crontabs/root
Většina systémů Linux (SuSE, Debian, Red Hat ) má také centralizovanou cron tabulku /etc/crontab.
K dispozici jsou také záznamy /etc/cron.d, /etc/cron.hourly, /etc/cron.daily, /etc/cron.weeklya /etc/cron.monthlykteré obsahují cron tabulky různých částí systému (rotace log, aktualizační soubory ...).
U pracovních stanic, které nemusí nutně fungovat 24 hodin denně, umožňuje aplikace anacron spouštět příkazy, které by měly být, když byl počítač vypnutý.
použití Čtení tabulkyNásledující příkazový řádek zobrazuje obsah tabulky cron pro aktuálního uživatele:
$ crontab -lTento příkaz nezobrazuje centralizovanou tabulku ( /etc/crontab).
Úpravy tabulkyNásledující příkaz se používá k úpravě tabulky cron pro aktuálního uživatele:
$ crontab -eTento příkaz má za následek spuštění výchozího editoru (obecně vi). Editor poté zobrazí aktuální tabulku. Při prvním spuštění crontabje tabulka prázdná, případně vytvořená z komentářů nápovědy (řádky začínající znakem #).
Výchozí editor se konfiguruje pomocí proměnných prostředí $EDITORnebo $VISUAL. Například pro konfiguraci editoru vim :
$ export EDITOR=vimTento příkaz také neumožňuje upravit centralizovanou tabulku ( /etc/crontab).
Výměna stolucrontabmůžete také přepsat aktuální tabulku novou. Tato nová tabulka může být poskytnuta v souboru jako parametr:
$ crontab fichier-contenant-la-nouvelle-table.txt Mazání tabulkyNásledující příkazový řádek odstraní bez potvrzení obsah cron tabulky pro aktuálního uživatele:
$ crontab -r Syntaxe tabulky HodnoceníKaždá položka v tabulce (každý řádek) odpovídá úkolu, který má být proveden, a musí respektovat tento zápis:
mm hh jj MMM JJJ tâchePro každou číselnou hodnotu ( mm , hh , jj , MMM , JJJ ) jsou možné notace:
Pokud jsou na stejném řádku zadány „číslo dne v měsíci“ a „den v týdnu“, pak cron provede úlohu, když se jedno z polí shoduje. Například následující řádek označuje, že úkol by měl být proveden v pátek i 13. každého měsíce o půlnoci:
0 0 13 * 5 tâche Provozní protokolÚkol je příkaz, který se má provést. Pokud tato úloha zapíše na svůj standardní výstup nebo standardní chybu , démon crond je odešle e-mailem příslušnému uživateli (tomu, který je označen šestým parametrem).
Aby se zabránilo přenosu těchto informací e-mailem, je možné je přesměrovat do souborů. Například :
mm hh jj MMM JJJ tâche > fichier-1 2> fichier-2Nebo hromadit standardní výstupy a chyby ve stejném souboru s názvem journal.txt :
mm hh jj MMM JJJ tâche >> /mon/répertoire/journal.txt 2>&1 Klávesové zkratkyKlávesové zkratky | Popis | Ekvivalent |
---|---|---|
@reboot | Při bootování | Ne |
@yearly | Každý rok | 0 0 1 1 * |
@annually | Každý rok | 0 0 1 1 * |
@monthly | Každý měsíc | 0 0 1 * * |
@weekly | Každý týden | 0 0 * * 0 |
@daily | Každý den | 0 0 * * * |
@midnight | Každou noc | 0 0 * * * |
@hourly | Každou hodinu | 0 * * * * |
Každý z příkladů šetří volné místo na disku (příkaz df ) do souboru /tmp/df.logv různých časech. Aby byla zachována historie, používají tyto příklady přesměrování, >>které umožňuje přidat nová data na konec souboru (pokud tento již existuje, jinak bude vytvořen).
Každý den v 23:30:
30 23 * * * df >> /tmp/df.logKaždou hodinu od 5 minut:
5 * * * * df >> /tmp/df.logKaždý první v měsíci ve 23 h 30 :
30 23 1 * * df >> /tmp/df.logKaždé pondělí ve 22 h 28 :
28 22 * * 1 df >> /tmp/df.logKaždý pátek a všech 13 kteréhokoli měsíce v 11 hodin 22 :
22 11 13 * 5 df >> /tmp/df.logKaždý pátek 13. každého měsíce v 11 hodin 22 :
22 11 13 * * [ `date '+\%w'` -eq 5 ] && df >> /tmp/df.logOd 2 do 5 každého měsíce v 10 hodin 12 :
12 10 2-5 * * df >> /tmp/df.logKaždý lichý den v měsíci ve 23 h 59 :
59 23 */2 * * df >> /tmp/df.logKaždý pracovní den v 22:00:
0 22 * * 1-5 df >> /tmp/df.logKaždých 5 minut:
*/5 * * * * df >> /tmp/df.logKaždý poslední den v měsíci (zpětné lomítko před% je povinné při úpravách crontabu, na rozdíl od ručního provádění příkazu):
0 0 28-31 * * [ `/bin/date +\%d` -gt `/bin/date +\%d -d "1 day"` ] && df >> /tmp/df.logVýše uvedené příklady používají přesměrování >>k vytvoření protokolu napříč několika běhy.
Aby bylo možné zapisovat do různých souborů, je možné použít příkaz date, jako v následujícím příkladu:
30 23 * * * df > /tmp/df_`date +\%d_\%m_\%Y_\%H_\%M`.log(znak `(těžký přízvuk, U + 0060) je vytvořen kombinací kláves [ Alt Gr] + [7] na klávesnici AZERTY ve Francii)
Dalším řešením je samozřejmě zápis souboru do skriptu appelle-df.sh :
#!/bin/sh JJ_MM_ANNEE_HH_MM=`date +\%d_\%m_\%Y_\%H_\%M` df > /tmp/df_${JJ_MM_ANNEE_HH_MM}.logA nahraďte předchozí cron tabulku:
30 23 * * * appelle-df.sh Užitečné příkazyTyto příkazy nefungují pro všechny distribuce Linux a Unix .
Určuje čas posledního úkolu provedeného pro všechny uživatele:
ls -lut /etc/init.d/cronExtrahujte informace o tabulce cron ze systémového protokolu:
grep -w cron /var/log/syslogZnovu spusťte démona cron:
/etc/init.d/cron force-reloadKdyž se změní zimní / letní čas, změní se oficiální čas od 2:00 do 3:00 (podle pravidel platných ve Francii). Tyto úkoly naplánovány v rozmezí od 2 hodin a 00 2 59 proto nebude provedena. Naopak, během změny letního / zimního času budou tyto stejné úkoly prováděny dvakrát (ve 3 hodiny ráno, stále jsou 2 hodiny ráno).
Aby se předešlo těmto nepříjemnostem, je většina systémů Unix nakonfigurována tak, aby používala koordinovaný světový čas (UTC), na který se tato pravidla letního času nevztahují.
mcron není správná implementace uvedeného programu, ale hlavní vývoj kódovaný v jazyce Scheme . Podporuje nejen tradiční metodu , ale také konfigurační soubory napsané ve Schématu, což mu dává určitou flexibilitu při definování úkolů, které mají být prováděny (může například brát v úvahu zatížení systému ). Novinka vychází ze schopnosti přečíst všechny požadované pokyny, zpracovat ty, které je třeba provést dále, a usnout v určeném čase. Když se probudí, příkazy se provedou a vypočítá se čas dalšího ošetření. Specifikace tohoto nového programu jsou psány v jazyce z rodiny Lispů , který umožňuje současné zpracování více instrukcí a větší flexibilitu než formát souboru Vixie . Nemluvě o tom, že změny provedené v souborech uživatelů crontabs jsou přímo hlášeny programem crontab , zatímco cron musí každou minutu kontrolovat / etc / crontab, i když použití tohoto souboru je silně odrazováno a lze jej deaktivovat. Jedná se o bezplatný software distribuovaný projektem GNU za podmínek licence GPL .
Některé části tohoto článku nebo dřívější verze tohoto článku jsou založeny na článku Web Plánovací úkoly Jak to funguje . Původní článek nese následující upozornění na autorská práva: „© Copyright 2004 Jean-François Pillou - hostitelem Web-solutions.fr. Tento dokument z webu CommentCaMarche.net podléhá licenci GNU FDL . Můžete kopírovat, upravovat kopie této stránky, pokud bude tato poznámka jasně vidět. ". Od té doby tento web Jak to funguje? změnil svůj průkaz. A konečně původní článek již není k dispozici.