Plánování spouštění úloh: Porovnání verzí

Smazaný obsah Přidaný obsah
Kuvaly (diskuse | příspěvky)
m Odstranění odkazu na stránky které sem odkazují(zbytečné)
Stránka vyprázdněna
Řádek 1:
Řešení spouštění programů ne okamžitě, ale někdy v budoucnu. Unix-like systémy používají dva způsoby řešení:
 
:* '''periodicky/opakovaně "někdy později"''' - pomocí démonu "crond". Popis spouštění příkazů je uložen ve struktuře (souboru) zvané [[crontab]]. Globální systémový soubor popisu tohoto opakovaného spouštění je /etc/crontab, uživatelé mohou mít svůj popis - ten je pak uložen v souboru <code>/var/spool/cron/jméno_uživatele</code>. Globální specifikaci může ovlivnit pouze [[root]] a může ji tvořit/modifikovat přímo textovým editorem, uživatelská je přístupná pomocí příkazu "<code>crontab<code>". Prvních pět polí řádky popisu jsou specifikace času, kdy se má daný příkaz vykonat. V globální specifikaci je jako šestý parametr jméno uživatele, pod kterým je daný program (sedmý parametr) spuštěn, v uživatelské specifikaci není - šestý parametr je specifikace programu a program je vždy spuštěn s UID uživatele.<br>Root může povolit/zakázat uživatele, kteří mohou používat spouštění úloh pomocí [[cron]] démonu, jejich vyjmenováním v souborech <code>/etc/cron.allow</code> a <code>/etc/cron.deny</code>. Zbytek řádky struktury crontab jsou parametry programu (tento zbytek je celý předán shell-u k vykonání, tzn. může to být zřetězení příkazů vč. přesměrování vstupů/výstupů). Implicitní shell je "'''/bin/sh'''", je možné specifikovat jiný shell deklarací proměnné '''SHELL'''. Speciální znak "'''%'''" bude démonem '''crond''' změněn na <nowiki><LF></nowiki> a vše za ním bude posláno na standardní vstup příkazu.<br>Blíže viz manuálové stránky '''cron''' a '''crontab'''.
 
:* '''jednorázově "někdy později"''' - pomocí démonu "atd". Úlohy (je možno je zadat jak ze stdin tak ze vstupního souboru) se zařadí do časové fronty démona - pomocí příkazu [[at]] nebo [[batch]]; je možné je kdykoliv vypsat příkazem [[atq]] nebo je z časové fronty smazat příkazem [[atrm]]. Příkaz at má řadu voleb specifikace data a času spuštění úlohy.<br>'''! Pokud je specifikace data i času v daném dnu, musí být specifikace času první !'''
Root může povolit/zakázat uživatele, kteří mohou zařadit do fronty spouštění úloh pomocí '''at''' démonu, jejich vyjmenováním v souborech <code>/etc/at.allow</code> a <code>/etc/at.deny.</code><br>Blíže viz manuálové stránky '''at''', '''batch''', '''atq''', '''atrm''' a '''atd'''.
<pre>
<nowiki>
# /etc/crontab - strucny popis a priklady:
#
# Format crontab (5 poli casu; u systemoveho je 6-te pole jmeno uzivatele, pod
# jehoz UID prikaz pobezi a zbytek radky je spousteny prikaz) :
# 1 - minuty (0-59)
# 2 - hodiny (0-23)
# 3 - dny v mesici (1-31)
# 4 - mesic (1-12)
# 5 - den v tydnu (0-7; 0 a 7 =nedele)
#
# Hvezdicka '*' znamena 'prvni-posledni', tj. splnuje vzdy
# Rozsahy jsou ve tvaru 'cislo1-cislo2'; 8-11 v poli hodin znamena
# vykonavani v 8,9,10,11 hodin
# Seznamy jsou ve tvaru posloupnosti cisel, oddelenych carkami:
# napr. 1,3,6,15. Seznamy a rozsahy mohou byt soucasne, napr. '0-4,18-23'
# Rozsah muze zahrnovat inkrement ("krok"), takze hodnota '1-9/2' je
# stejna jako 1,3,5,7,9
#
# Komentar je radka zacinajici '#' (ev. po prazdnem znaku); nesmi byt za
# prikazem cronu ani za nastavenim promenne environmentu.
# cron automaticky nastavuje tyto promenne prostredi: SHELL="/bin/sh",
# HOME a LOGNAME (podle /etc/passwd). Dale jsou na e-mail adresu v MAILTO
# (implicitne vlastnik crontab-u) poslany vystupy (stdout + stderr)
# spustenych prikazu. Posilani muze byt potlaceno nastavenim MAILTO="".
# cron prohlizi polozky crontab kazdou minutu. Prikaz je spusten, pokud minuta,
# hodina, mesic v roce a alespon jeden z obou poli dne (den v tydnu nebo den
# v mesici) souhlasi s aktualnim casem.
#-------------------------------------------------------------------------------
# Priklad globalniho (System-wide) crontab-u "/etc/crontab". Od uzivatelskeho
# se lisi tim, ze prikazova cast zacina jmenem uzivatele, pod kterym se prikaz
# spousti. Take jej neni treba editovat pres prikaz `crontab'
 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
MAILTO=root
HOME=/
 
# script "run-parts" spousti ulohy ulozene v adresari danem jako parametr :
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
 
# Testovaci blbost spoustena kazdou minutu:
* * * * * root echo "Test mail pro roota"
 
# Delej neco kazdou lichou hodinu kazdy sudy den:
* 1-23/2 */2 * * root /usr/local/sbin/delej_neco
 
# Zalohovani dat 1 x tydne v noci z patku na sobotu (v 0:42) :
42 0 * * 6 root /usr/local/sbin/zal_data_tyden
 
# Zalohovani dat 1 x mesicne prvniho v 0:42 :
42 0 1 * * root /usr/local/sbin/zal_data_mesic
 
# Stazeni aktualizace neceho v Po-Pá v 5:45 a zaslani vystupu petrovi a pavlovi:
MAILTO=petr,pavel
45 5 * * 1-5 root /usr/local/sbin/myDB_update
#a MAILTO znovu nastavim na puvodni hodnotu (jinak bych tohle musel dat nakonec)
MAILTO=root
 
#upozorneni na obed (11:58 priprava, 12:00 odchod):
58 11 * * * root /usr/local/bin/obed_priprava
0 12 * * * root /usr/local/bin/obed_odchod
 
#jakas synchronizace casu systemu denne v 5:58, 11:58 a 17:58, vystup potlacen:
58 5,11,17 * * * root /usr/local/sbin/nastav_date >/dev/null
 
# Monitorovani teploty a ventilatoru kazdych 5 minut:
*/5 * * * * root /usr/local/sbin/test_teplota
 
# Monitorovani prostoru na disku od 6:11 do 19:51 Pondeli-Patek:
11,31,51 6-19 * * 1-5 root /usr/local/sbin/test_disk_full
 
 
# Priklad vybirani posty skolnim serverem:
# leden-cerven, zari-prosinec: Po - Pa v 6:30 a 11:00
# So, Ne v 18:00
30 6 * 1-6,9-12 1-5 root /usr/local/sbin/inet_mail
0 11 * 1-6,9-12 1-5 root /usr/local/sbin/inet_mail
0 18 * 1-6,9-12 6,7 root /usr/local/sbin/inet_mail
#
# a cervenec, srpen: Po, St, Pa v 6:20
20 6 * 7,8 1,3,5 root /usr/local/sbin/inet_mail</nowiki></pre>
 
[[Kategorie:Linux]]
[[Kategorie:Počítače]]