Plánování skriptů pomocí Cron

Úvod do Bash skriptování

Alex Scriven

Data Scientist

Proč plánovat skripty?

 

Existuje mnoho situací, kdy je plánování skriptů užitečné:

  1. Pravidelné úlohy, které je třeba provádět – denně, týdně nebo vícekrát denně.
    • Lze si nastavit připomínku v kalendáři, ale co když ji zapomenete!?
  2. Optimální využití zdrojů (spouštění skriptů v brzkých ranních hodinách)

Plánování skriptů pomocí cron je nezbytnou součástí znalosti moderní datové infrastruktury.

Úvod do Bash skriptování

Co je cron?

 

Cron je součástí unixových systémů od 70. let. Lidé jsou líní již tak dlouho!

Název pochází z řeckého slova pro čas, chronos.

Funguje na základě souboru crontab, který obsahuje cronjobs – každý říká crontab, jaký kód spustit a kdy.

Úvod do Bash skriptování

Crontab – základ cronjobů

 

Aktuálně naplánované úlohy (cronjobs) zobrazíte tímto příkazem:

crontab -l
crontab: no crontab for user

Zdá se, že je třeba nejprve vytvořit plán (cronjob)!

Úvod do Bash skriptování

Struktura crontabu a cronjobů

Tento obrázek z Wikipedie ukazuje, jak se sestavuje cronjob v souboru crontab. Každý cronjob je na samostatném řádku.

Struktura crontabu

  • Nastavuje se 5 hvězdiček, každá pro jednu časovou jednotku
  • Výchozí hodnota * znamená „každý/každá"
Úvod do Bash skriptování

Cronjob example

Projdeme si několik příkladů cronjobů:

5 1 * * * bash myscript.sh

  • Hvězdička minut je 5 (5 minut po celé hodině). Hvězdička hodin je 1 (po 1:00 ráno). Poslední tři jsou *, tedy každý den a měsíc.
    • Celkově: spouštět každý den v 1:05 ráno.

 

15 14 * * 7 bash myscript.sh

  • Hvězdička minut je 15 (15 minut po celé hodině). Hvězdička hodin je 14 (po 14:00). Další dvě jsou * (každý den v měsíci, každý měsíc). Poslední hvězdička je den 7 (v neděli).
    • Celkově: spouštět každou neděli v 14:15.
Úvod do Bash skriptování

Pokročilá struktura cronjobů

Pokud chcete spouštět úlohu vícekrát denně nebo každých X jednotek, je to také možné:

  • Čárka pro konkrétní intervaly. Například:
    • 15,30,45 * * * * spustí úlohu v 15., 30. a 45. minutě každé hodiny určené druhou hvězdičkou. Zde každou hodinu, každý den atd.
  • Lomítko pro „každých X jednotek". Například:
    • */15 * * * * spouští každých 15 minut. Také pro každou hodinu, den atd.
Úvod do Bash skriptování

Váš první cronjob

Naplánujeme spuštění skriptu extract_data.sh každý den ráno ve 1:30. Postup:

  1. V terminálu zadejte crontab -e pro úpravu seznamu cronjobů.
    • Může se zeptat, který editor chcete použít. nano je snadná volba s menší křivkou učení než vi (vim).
  2. Vytvořte cronjob:
    • 30 1 * * * extract_data.sh
Úvod do Bash skriptování

Váš první cron job

3. Ukončete editor a uložte soubor

Pokud používáte nano (na Macu), stiskněte ctrl + o, poté enter a ctrl + x pro ukončení.

Zobrazí se zpráva crontab: installing new crontab

4. Ověřte, že je cronjob přítomen, příkazem crontab -l.

30 1 * * * extract_data.sh

Výborně!

Úvod do Bash skriptování

Lass uns üben!

Úvod do Bash skriptování

Preparing Video For Download...