dum | žák

Linux

Název školy Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace
Adresa školky Kostelní 134, 411 08 Štětí
46773509
Název operačního programu OP Vzdělávání pro konkurenceschopnost
Registrační číslo CZ.1.07/1.5.00/34.1006
Označení vzdělávacího materiálu VY_32_INOVACE_21_PSS_414
Název tématické oblasti (sady) Operační systémy
Název materiálu Plánování úloh
Anotace Popisuje možnosti plánování spuštění úloh v systému pomocí démona Crond. Ukazuje způsob, jakým se úlohy plánují. Předkládá příklady plánování v atypických časech, cyklické plánování nebo jednorázové.
Autor Ivan Pomykacz Jazyk český
Očekávaný výstup Naplánuje spuštění úlohy v daný čas nebo cyklu.
Klíčová slova plánování úloh, cron, crontab
Druh výukového zdroje Výklad Věková skupina žáků 17+
Typ interakce aktivita Ročník 3.
Speciální vzdělávací potřeby žádné
Zhotoveno, (datum/období) 29.4.2014 Celková velikost

pdf icon
Plánování úloh

Obsah

Čas od času se hodí, aby se provedla nějaká naplánovaná akce. Např. pročištění dočasných adresářů, ze kterých se odstraní soubory starší než ... Nebo spouštění pravidelných záloh vždy po práci. A co třeba automatizovaná kontrola/analýza log souborů za posledních 24 hodin.

Výhoda plánovače úloh spočívá v tom, že úloha nemusí běžet neustále v paměti a hlídat čas, kdy má provést požadovanou akci. Naopak, je tu plánovač, který dané úlohy spouští dle plánu.

Cron

V linuxových systémech je jedním z takových plánovačů cron. Je to démon/služba, která běží na pozadí a hlídá si tzv. crontab soubory, což jsou vlastně jen tabulky jednotlivých uživatelů, kde je napsáno, co se má kdy spustit.

V systému jsou definované tzv. globální crontaby v adresáři /etc. Jmenovitě jde o

  • cron.hourly
  • cron.daily
  • cron.weekly
  • cron.monthly

Pokud do tohoto adresáře nahrajete skript, cron jej bude automaticky spouštět (každou hodinu, denně, týdně nebo měsíčně).

Podíváme-li se do těchto adresářů, tak např. /etc/cron.daily není prázdný.

tux@wheezy:~$ ls /etc/cron.daily/
apt  aptitude  bsdmainutils  dpkg  exim4-base  logrotate  man-db  mlocate  passwd

Jsou zde skripty pro apt (správce balíčků) nebo logrotate, který má na starosti rotaci log souborů.

crontab

Plány spouštění se ukládají do crontabů, což jsou jednoduše tabulky, kde na každém řádku je definována samostatná úloha a její načasování.

Příklad plánu spuštění skriptu uklid.sh každou středu, ve dvě hodiny ráno.

0 2 * * 3 uklid.sh

Pokud se podíváte na klíč zápisu (níže), hned pochopíte o čem jsou čísla 0, 2 a 3. Hvězdička má speciální význam a znamená každou hodnotu z dané množiny. Pokud je daná množina dny v měsíci, tak to budou všechny dny (tedy každý den) v daném měsíci.

# * * * * *  příkaz
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── den v týdnu (0 - 7) (0 až 6 jsou neděle až sobota, nebo lze použít 1 až 7 pro pondělí až neděle (neděle má tedy čísla 0, 7).
# │ │ │ └────────── měsíc (1 - 12)
# │ │ └─────────────── den v měsíci (1 - 31)
# │ └──────────────────── hodina (0 - 23)
# └───────────────────────── minuta (0 - 59)

Editace crontabu

Každý uživatel může příkazem crontab -l vypsat svůj vlastní crontab.

tux@wheezy:~$ crontab -l
no crontab for tux

Pokud žádný crontab nemá, zobrazí hláška, kterou vidíte výše.

Nový crontab se založí příkazem crontab -e. Jak záhy uvidíte, spustí se předdefinovaný editor (pravděpodobně nano), ve kterém již bude otevřený dočasný soubor (v mém případě: /tmp/crontab.TjuJUp/crontab). Jakmile provedete potřebné změny a soubor uložíte (a ukončíte nano), crontab vás informuje, že zavádí nový crontab.

tux@wheezy:~$ crontab -e
no crontab for tux - using an empty one
crontab: installing new crontab

Pokud nyní zadáme výpis crontabu, dostaneme:

tux@wheezy:~$ crontab -l
0 2 * * 3 uklid.sh

Společně ještě se zakomentovaným textem, který byl z ukázky vyňat.

Způsoby zápisu

  • každou druhou hodinu .. */2, zápis pomocí / dělí interval na požadovaný počet.

  • od pondělí do pátku .. 1-5, použitý symbol - lze použít pro spojitý rozsah.

  • v pondělí, středu a pátek .. 1,3,5, symbolem , lze vyjmenovat požadované hodnoty (pozor na mezery, ty se nepíší).

Uvedené způsoby zápisu lze samozřejmě kombinovat a použít i na jiné hodnoty než zmíněné.