Cron

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 14. září 2016; kontroly vyžadují 28 úprav .

cron  je klasický démon ( počítačový program  na  systémech  třídy  UNIX ) , který se používá k pravidelnému spouštění úloh v určitou dobu. Pravidelné akce jsou popsány instrukcemi umístěnými v souborech crontab a speciálních adresářích.

Název cron je odvozen z řeckého slova χρόνος (hrόnos) - čas (v angličtině - chronos ). Vývojář cronu Ken Thompson to potvrdil v soukromém rozhovoru s Brianem Kernighanem .   .

Na systémech založených na systemd byl cron ve skutečnosti nahrazen vestavěným mechanismem systemd.timer.

Soubory Crontab vytvořené pro jednotlivé uživatele jsou umístěny v adresáři [1] /usr/spool/cron/crontabs/ nebo /var/spool/cron/tabs/ . Nedoporučuje se je upravovat ručně, k tomu slouží příkaz crontab -e. Soubory crontab používané ke správě celého systému jsou umístěny v adresáři /etc/cron.d/ . Kromě toho adresáře /etc/cron.daily/ , /etc/cron.weekly/ a /etc/cron.monthly/ obsahují programy, které se spouštějí automaticky (denně, týdně nebo měsíčně).

Hlavní konfigurační soubor cronu /etc/crontabvypadá nějak takto:

# /etc/crontab: systémový crontab # Na rozdíl od jiných crontab nemusíte spouštět příkaz `crontab' # k instalaci nové verze, když upravujete tento soubor # a soubory v /etc/cron.d. Tyto soubory mají také pole pro uživatelské jméno, # které žádný z ostatních crontabů nemá. SHELL = /bin/sh PATH = /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # mh dom mon dow uživatelský příkaz 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #

crontab

Každý uživatel systému má svůj vlastní soubor nastavený pomocí crontab , který popisuje, kdy a jaké programy se mají jménem tohoto uživatele spouštět. K úpravě souboru crontab se používá speciální stejnojmenný program crontab , který umožňuje nepřerušovat proces crontab během úprav.

Zobrazit obsah aktuálního souboru plánu:

crontab -l

Smazání aktuálního souboru plánu:

crontab -r

Chcete-li upravit soubor crontab vašeho uživatele , použijte příkaz [2]

crontab -e

Tabulka crontab se skládá ze 6 sloupců oddělených mezerami nebo tabulátory . Prvních pět sloupců nastavuje dobu provedení ( minuta , hodina , den , měsíc , den v týdnu ), mohou obsahovat číslo, seznam čísel oddělených čárkami, rozsah čísel oddělených pomlčkou, symboly *nebo /. V systémových souborech crontab je po polích času uveden uživatel, od kterého je příkaz spuštěn. Všechny ostatní znaky v řetězci jsou interpretovány jako spustitelný příkaz s jeho parametry. Pokud příkaz odešle nějaký text na standardní výstup, je tento text odeslán na e-mail uživatele .

* * * * * příkaz k provedení ------ | | | | | | | | | ----- den v týdnu (0-7) (neděle = 0 nebo 7) | | | ------- měsíc (1-12) | | --------- den v měsíci (1-31) | ----------- hodina (0-23) ------------- minuta (0-59)

Příklad souboru crontab :

# komentáře začínají '#' jako obvykle # použijte /bin/sh jako shell SHELL = /bin/sh # pošlete výsledky na tuto adresu MAILTO = paul@example.org # přidejte domovský adresář uživatele do PATH PATH = /bin:/ usr/bin:/home/paul/bin #### Úlohy začínají zde # spouštět každý den v 0 hodin 5 minut, přidat výsledek do log/denně 5 0 * * * $HOME /bin/daily.job >> $HOME /log/daily 2 > & 1 # provést 1. den každého měsíce ve 14:15 15 14 1 * * $HOME /bin/měsíčně # každý všední den ve 22:00 0 22 * ​​​​* 1 -5 echo "Čas jít domů" | mail -s "Už je 22:00" john 23 */2 * * * echo "Běh v 0:23, 2:23, 4:23 atd." 5 4 * * ozvěna slunce "Běží v neděli ve 4:05" 0 0 1 1 * ozvěna "Šťastný nový rok!" 15 10 .13 * * 1 .4 echo "Tato zpráva se zobrazuje v pondělí a čtvrtek v 10:15 a 13:15" 0 -59 * * * * echo "Spustit každou minutu" 0 -59/2 * * * * echo "Běží v sudých minutách" 1 -59/2 * * * * echo "Běží v lichých minutách" # každých 5 minut */5 * * * * echo "Uplynulo pět minut" # každou první neděli každého měsíce. -eq 7 je kód dne v týdnu, tj. 1 -> pondělí , 2 -> úterý atd. 0 1 1 -7 * * [ " $( datum '+\%u' ) " -eq 7 ] && echo " Tento štítek se zobrazuje každou první neděli v měsíci v 1:00"

Funkce

  • Všechny podmínky (čas zahájení) jsou kontrolovány „logickým AND“, kromě podmínek „den v týdnu“ a „den v měsíci“ – specifikované společně, jsou zpracovány „logickým OR“, tedy „na libovolném dnů“, což se odráží v dokumentaci (Ubuntu, Debian, FreeBSD). Tato logika však není zřejmá a neumožňuje vytvořit podmínku jako „první pondělí každého měsíce“ nebo „každý pátek 13.“. Vývojáři toto chování nemění a považují ho za standard. [3]
  • Všechny soubory crontab musí končit prázdným řádkem, jinak bude poslední pravidlo nebo celý soubor ignorován.
  • Příkazy v souboru crontab používají standardní syntaxi shellu, ale nelze je rozdělit na více řádků.
  • Spustitelné soubory v automaticky kontrolovaných adresářích jako /etc/cron.daily/ jsou ignorovány, pokud jejich název obsahuje tečku.
  • Syntaxe crontab používaná ke spuštění každých pár minut s offsetem může vést k neočekávaným výsledkům. Nahrávání 1-56/5 * * * *se tedy nespustí v 1. minutu každé hodiny; pro spuštění „každých 5 minut od 1. minuty v hodině“ použijte formát 1-59/5 * * * *nebo 1,6,11,16,21,26,31,36,41,46,51,56 * * * *.
  • Znak %v příkazu run se používá k předání nového řádku příkazu (pokud není uvozen). Následující text příkazu je předán spuštěnému programu nikoli jako parametry příkazového řádku, ale prostřednictvím standardního vstupu .
  • Výstup spuštěných příkazů je odeslán uživateli, jehož jménem bylo spuštění provedeno. Pokud je direktiva umístěna v souboru crontabMAILTO=<new@email> před příkazem , budou výstupní data odeslána na zadanou adresu.

Grafické uživatelské rozhraní

Pro pohodlí uživatelů má mnoho systémů speciální GUI programy pro správu cronu .

Plán Gnome

Pro distribuce založené na Debianu:

  • Instalace:sudo apt-get install gnome-schedule
  • Spustit: Aplikace → Systémové nástroje → Plán [1]

kcron

Kcron je rozhraní KDE pro úpravu konfiguračních souborů cronu . Nástroj se spouští Alt+F2 , v editačním okně můžete myší zadat:

  • úplnou cestu ke spustitelnému souboru programu
  • správný čas pro spuštění programu
  • proměnné prostředí potřebné během provádění programu

Podobné programy

  • NnCron  je plánovač pro Windows .
  • Plánovač úloh  - Plánovač úloh systému Windows a jeho konzolový nástrojschtasks.exe.
  • at  - spouštět programy jednou v daný čas.
  • anacron  - periodické spouštění programů, ne nutně přesně v určený čas: například pokud byl stroj vypnut v čase zadaném v úloze,anacronprovede úlohu později.
  • inetd  - spouštět programy služby síťového požadavku.
  • upstart  - spuštění servisních programů událostí (zobecnění cronu, atd., anacronu, inetd ).

Poznámky

  1. Man cron Archivováno 28. května 2007 na Wayback Machine .
  2. Cron Howto archivováno 15. května 2011 na Wayback Machine .
  3. Debian Issue Tracker Diskuze Archivována 11. dubna 2018 na Wayback Machine .

Odkazy