GNU/Linux >> Znalost Linux >  >> Linux

10 užitečných příkladů cronu pro plánování úloh v Linuxu

Systém GNU/Linux podporuje několik utilit pro plánování úloh. Nástroj cron je nejvíce podporovaný. Umožňuje naplánovat spouštění úloh na pozadí v pravidelných intervalech. Obslužný program cron používá tabulku (crontab) se seznamem skriptů nebo příkazů, které mají být provedeny, a časem, kdy mají být provedeny.

Plánování úloh

Běžní uživatelé mohou ke správě svých úloh použít příkaz crontab. Tento příkaz lze volat čtyřmi různými způsoby:

Příkaz Funkce
crontab -l Seznam úloh pro aktuálního uživatele
crontab -r Odstranit všechny úlohy pro aktuální uživatele.
crontab -e Upravit úlohy pro aktuálního uživatele.
crontab [název souboru] Odstraňte všechny úlohy a nahraďte je úlohami přečtenými z [název souboru]. Není-li zadán žádný soubor, použije se stdin.

Jak upravit a zobrazit crontab

Při úpravách úloh pomocí „crontab -e “, spustí se editor (ve výchozím nastavení vi. pokud nebyla proměnná prostředí EDITOR nastavena na něco jiného). Upravovaný soubor bude mít jednu úlohu na řádek. Prázdné řádky jsou povoleny a komentáře začínají znakem hash (#).

# crontab -e

Když spustíte příkaz „crontab -e“ bez jakýchkoli voleb, bude crontab aktuálně přihlášeného uživatele standardně upraven. Chcete-li upravit crontab jiného uživatele, můžete použít volbu -u s příkazem crontab. Chcete-li například upravit crontab uživatele john.

# crontab -u john -e

Podobně, chcete-li zobrazit crontab aktuálního uživatele, použijte „crontab -l “.

# crontab -l

Chcete-li zobrazit seznam crontab konkrétního uživatele, použijte příkaz níže.

# crontab -u john -l

Konfigurační soubory Cronu

Proces na pozadí cron je většinou nečinný. Jednou za minutu se probudí a zkontroluje /etc/crontab, /etc/cron.d a uživatelské soubory cron tabulky a určí, zda existují nějaké úlohy, které je třeba provést.

Níže uvedená tabulka shrnuje účel různých souborů a adresářů používaných cronem. Znalost těchto souborů a adresářů vám pomůže vyřešit jakékoli problémy a také podrobněji porozumět cronu.

Soubor Účel
/etc/init.d/crond Spustí démona cron při spouštění systému.
/var/log/cron Systémové zprávy související s procesem cron. Užitečné pro odstraňování problémů.
/var/spool/cron/[uživatelské jméno] Uživatelské soubory crontab sou uloženy v adresáři /var/spool/cron.
/etc/cron.allow Určuje uživatele, kteří mohou vytvořit tabulku cron.
/etc/cron.deny Určuje uživatele, kteří nemají povoleno vytvářet cron tabulku.
/etc/crontab Systémová tabulka cron, která obsahuje příkazy ke spouštění skriptů umístěná v následujících adresářích: /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly a /etc/cron.monthly.
/etc/cron.d Adresář, který obsahuje cron tabulky pro úlohy, které je třeba spouštět podle jiného než hodinového, denního, týdenního nebo měsíčního plánu.
/etc/cron.hourly Adresář, který obsahuje systémové skripty, které se mají spouštět každou hodinu.
/etc/cron.daily Adresář, který obsahuje systémové skripty ke každodennímu spouštění.
/etc/cron.weekly Adresář, který obsahuje systémové skripty, které se mají spouštět každý týden.
/etc/cron.monthly Adresář, který obsahuje systémové skripty, které se mají spouštět měsíčně.

Syntaxe Crontab

Úlohy jednotlivých uživatelů jsou uloženy v adresáři /var/spool/cron v souborech odpovídajících uživatelským jménům. Tyto soubory vždy patří uživateli root. Soubory ve /var/spool/cron se přímo neupravují. Místo toho se k jejich manipulaci používá program zvaný crontab. Obrázek níže ukazuje syntaxi úlohy cron.

Každý řádek v souboru definuje úlohu. V řadě je 6 polí. Prvních 5 polí definuje čas, poslední pole obsahuje příkaz ke spuštění. Může to být jakýkoli typ příkazu nebo skriptu shellu. Prvních 5 polí má následující formát:

Pole Rozsah
Minuty 0–59
Hodiny 0–23
Den v měsíci 1–31
Měsíc 0–12
Den v týdnu 0–7

Příkladové úlohy cron

1. Naplánujte si práci každý rok na 2. února

Záložní skript je třeba spustit jednou ročně k určitému datu v měsíci únoru. Sytaxe je uvedena níže.

0 9 2 2 *   /usr/local/bin/yearly_backup

2. Naplánujte si úlohu každou hodinu na pátou minutu, každý den

Ke spuštění skriptu každou hodinu v pátou minutu, každý den použijte následující příkaz:

5 * * * *      $HOME/bin/daily.job >> $HOME/tmp/out  2>&1

3. Naplánujte si úlohu každý den 5 minut po půlnoci

Ke spuštění 5 minut po půlnoci každý den použijte následující příkaz:

5 0 * * *      $HOME/bin/daily.job >> $HOME/tmp/out  2>&1

4. Naplánujte si úlohu na konkrétní čas na prvního každého měsíce

Pomocí následujícího příkazu spusťte ve 14:15. prvního každého měsíce:

15 14 1 * * *     $HOME/bin/monthly

5. Naplánujte si práci na konkrétní čas pouze ve všední dny (kromě soboty a neděle)

Pro spuštění ve 22:00 použijte následující příkaz. ve všední dny:

0 22 * * 1-5  $HOME/bin/weekday.job >> $HOME/tmp/out  2>&1

6. Plánování více úloh v jedné úloze cron

Můžeme také naplánovat více úloh v jedné úloze cron pomocí úloh oddělených středníkem(;), jak je uvedeno níže:

0 12 * * * /var/tmp/script01.sh; /var/tmp/script02.sh

7. Použití rozsahů k určení počátečních časů

Rozsahy lze specifikovat pomocí pomlčky. Hodnota 1-5 označuje, že toto pole je platné pro čísla 1 až 5. Pokud místo čísla použijete název, nemůžete určit rozsah. Příklad určení rozsahů je uveden níže. Spouštění úlohy je naplánováno každou hodinu od 15:00. Do 22:00

* 3-10 * * * /var/tmp/script.sh

8. Použití hodnot kroku k určení časů zahájení

Krokové hodnoty lze použít ve spojení s rozsahy. Chcete-li zadat hodnotu kroku, sledujte rozsah pomocí lomítka (/) a čísla. Zadané číslo je hodnota kroku. Následující příklad například uvádí, že by měla odpovídat každá třetí hodnota (v tomto případě 2, 5, 8 a 11):

* 0-12/3 * * *  /var/tmp/script.sh

Krokové hodnoty lze také použít s hvězdičkami. Hodnota */3 v poli hodin by odpovídalo každé třetí hodině (0, 3, 6, 9, 12, 15, 18 a 21).

9. Použití seznamů k určení časů zahájení

Seznamy jsou také přijatelné; každá položka v seznamu je oddělena čárkou. Je běžné používat seznamy ve spojení s rozsahy, například takto:

1-15,31-45 * * * *  /var/tmp/script.sh

Tento příklad odpovídá všem číslům (v našem případě minut) od 1 do 15 a od 31 do 45. Pokud místo čísla použijete jméno, nemůžete zadat seznam.

10. Naplánujte si práci na 4:45, 1., 10. a 22. dne každého měsíce

Níže je uveden příklad spuštění úlohy v určitou dobu v několika konkrétních dnech v měsíci.

45 4 1,10,22 * * /apps/bin/backup.sh 

Makra Crontab

Do souboru crontab můžeme přidat makra. Například k restartování „my_script“ po každém restartu použijte následující:

@reboot  /var/tmp/my_script

Následuje shrnutí několika dalších maker:

Vstup Popis Ekvivalentní
@reboot Spustit jednou při spuštění Žádné
@weekly Běhejte jednou týdně 0 0 * * 0
@daily Běhejte jednou denně 0 0 * * *
@midnight (stejně jako @daily) 0 0 * * *
@hourly Spustit jednou za hodinu 0 * * * *

Zacházení s výstupem

Skript často něco vytiskne na obrazovku, ať už za účelem ladění, aktualizace stavu nebo zalogování chyby. Vše, co úloha vytiskne na obrazovku, je odesláno e-mailem aktuálnímu uživateli, což lze přepsat proměnnou MAILTO v crontab.

# crontab -l
MAIL=john
0 2 * * * /apps/bin/backup.sh
Jak naplánovat úlohy s Cron v Linuxu
Definování systémových úloh pomocí Cron v Linuxu
UNIX / Linux :Jak crontab ověřuje přístup na základě souborů cron.allow a cron.deny
CentOS / RHEL :Základy anacron (Co je to anacron a jak ho nakonfigurovat)
CentOS / RHEL :Průvodce cronem pro začátečníky


Linux
  1. Jak používat cron na Linuxu

  2. 12 Užitečné příklady příkazů Wget v Linuxu

  3. 6 Příklady příkazů Linux Crontab

  1. 14 Užitečné příklady příkazů „ls“ v Linuxu

  2. Příkaz ls v Linuxu:17 vysvětlení užitečných příkladů

  3. Jak naplánovat úlohy Cron pomocí Crontab

  1. 9 Užitečné příklady dotykových příkazů v Linuxu

  2. Plánování úloh Cron pomocí Crontab

  3. Jak vypsat Cron Jobs v Linuxu