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.shJak 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