GNU/Linux >> Znalost Linux >  >> Linux

Jak automatizovat úlohy pomocí cron Jobs v Linuxu

Pokud pracujete v IT, možná budete muset naplánovat různé opakující se úkoly jako součást vašich automatizačních procesů.

Můžete například naplánovat určitou úlohu tak, aby se pravidelně spouštěla ​​v určitou denní dobu. To je užitečné při provádění denních záloh, měsíční archivace protokolů, týdenního mazání souborů za účelem vytvoření místa a tak dále.

A pokud jako OS používáte Linux, použijete k tomu něco, čemu se říká cron job.

Co je to cron?

Cron je nástroj pro plánování úloh přítomný v systémech podobných Unixu. Démon crond umožňuje funkčnost cronu a běží na pozadí. Cron čte crontab (cron tabulky) pro spouštění předdefinovaných skriptů.

Pomocí specifické syntaxe můžete nakonfigurovat úlohu cron tak, aby naplánovala automatické spouštění skriptů nebo jiných příkazů.

U jednotlivých uživatelů zkontroluje služba cron následující soubor:/var/spool/cron /crontabs

Co jsou úlohy cron v Linuxu?

Každá úloha, kterou naplánujete prostřednictvím cronů, se nazývá úloha cron. Úlohy Cron nám pomáhají automatizovat naše rutinní úkoly, ať už jsou hodinové, denní, měsíční nebo roční.

Nyní se podívejme, jak úlohy cron fungují.

Jak řídit přístup ke cronům

Aby bylo možné používat úlohy cron, musí správce povolit přidávání úloh cron pro uživatele v souboru '/etc/cron.allow'.

Pokud se zobrazí výzva jako je tato, znamená to, že nemáte oprávnění používat cron.

Chcete-li umožnit Johnovi používat crony, zahrňte jeho jméno do '/etc/cron.allow'. To umožní Johnovi vytvářet a upravovat úlohy cron.

Uživatelům lze také odepřít přístup k úloze cron zadáním jejich uživatelských jmen do souboru '/etc/cron.d/cron.deny'.

Jak přidat úlohy cron v Linuxu

Nejprve, abyste mohli používat úlohy cron, musíte zkontrolovat stav služby cron. Pokud cron není nainstalován, můžete si jej snadno stáhnout prostřednictvím správce balíčků. Použijte toto ke kontrole:

# Check cron service on Linux system
sudo systemctl status cron.service

Syntaxe úlohy Cron

Crontabs používají následující příznaky pro přidávání a výpis úloh cron.

  • crontab -e :upraví položky crontab pro přidání, odstranění nebo úpravu úloh cron.
  • crontab -l :seznam všech úloh cron pro aktuálního uživatele.
  • crontab -u username -l : vypsat crony jiného uživatele.
  • crontab -u username -e : upravit crony jiného uživatele.

Když vypíšete crony, uvidíte něco takového:

# Cron job example
* * * * * sh /path/to/script.sh

Ve výše uvedeném příkladu

  • * * * * * představuje minuty, hodiny, dny, měsíce, dny v týdnu.
Hodnota Popis
Minuty 0–59 Příkaz bude proveden v konkrétní minutu.
Otevírací doba 0–23 Příkaz bude proveden v konkrétní hodinu.
Dny 1–31 Příkazy budou provedeny v těchto dnech v měsících.
Měsíce 1–12 Měsíc, ve kterém je třeba provést úkoly.
Pracovní dny 0–6 Dny v týdnu, kdy se spouštěly příkazy. Zde je 0 neděle.
  • sh znamená, že skript je bash skript a měl by být spuštěn z /bin/bash .
  • /path/to/script.sh určuje cestu ke skriptu.

Níže je uveden souhrn syntaxe úlohy cron.

*   *   *   *   *  sh /path/to/script/script.sh
|   |   |   |   |              |
|   |   |   |   |      Command or Script to Execute        
|   |   |   |   |
|   |   |   |   |
|   |   |   |   |
|   |   |   | Day of the Week(0-6)
|   |   |   |
|   |   | Month of the Year(1-12)
|   |   |
|   | Day of the Month(1-31)  
|   |
| Hour(0-23)  
|
Min(0-59)

Příklady úloh Cron

Níže je několik příkladů plánování úloh cronu.

Plán Plánovaná hodnota
5 0 * 8 * V 00:05 v srpnu.
5 4 * * 6 V neděli ve 4:05.
0 22 * ​​* 1-5 Ve 22:00 každý den v týdnu od pondělí do pátku.

Je v pořádku, pokud to nedokážete pochopit najednou. Můžete cvičit a generovat plány cron s crontab guru.

Jak nastavit úlohu cron

V této části se podíváme na příklad, jak naplánovat jednoduchý skript s úlohou cron.

  1. Vytvořte skript s názvem date-script.sh který vytiskne systémové datum a čas a připojí je k souboru. Skript je zobrazen níže:

2. Udělejte skript spustitelným tím, že mu udělíte práva k provádění.

chmod 775 date-script.sh

3. Přidejte skript do crontab pomocí crontab -e .

Zde jsme naplánovali spuštění za minutu.

4. Zkontrolujte výstup souboru date-out.txt . Podle skriptu by se do tohoto souboru mělo každou minutu tisknout systémové datum.

Jak řešit problémy s crony

Crony jsou opravdu užitečné, ale nemusí vždy fungovat tak, jak bylo zamýšleno. Naštěstí existuje několik účinných metod, které můžete použít k jejich odstranění.

  1. Zkontrolujte plán.

Nejprve můžete zkusit ověřit plán, který je nastaven pro cron. Můžete to udělat pomocí syntaxe, kterou jste viděli ve výše uvedených částech.

2. Zkontrolujte protokoly cron.

Nejprve musíte zkontrolovat, zda cron běžel v zamýšlený čas nebo ne. Můžete to ověřit v protokolech cron umístěných na var/log/cron . V některých distribucích lze protokoly nalézt na adrese /var/log/syslog

Pokud je v těchto protokolech záznam ve správný čas, znamená to, že cron běžel podle vámi nastaveného plánu.

Níže jsou protokoly našeho příkladu úlohy cron. Všimněte si prvního sloupce, který zobrazuje časové razítko. Cesta skriptu je také uvedena na konci řádku.

3. Přesměrujte výstup cronu do souboru.

Výstup cronu můžete přesměrovat do souboru a zkontrolovat soubor na případné chyby.

# Redirect cron output to a file
* * * * * sh /path/to/script.sh &> log_file.log

Zabalení

Automatizace úloh, stejně jako u úloh cron, snižuje opakující se práci, kterou musíte dělat. Umožňuje také strojům automaticky se léčit a pracovat nepřetržitě bez lidského zásahu.

Automatizace v Linuxu silně závisí na úlohách cronů, takže byste se rozhodně měli naučit crony a experimentovat s nimi.

Děkuji za přečtení až do konce. Zpětná vazba je vždy vítána.

Pokud vám tento článek pomohl, sdílejte jej se svými přáteli.

Pojďme se připojit na Twitteru!


Linux
  1. Plánování úloh pomocí linuxového příkazu cron

  2. Plánování systémových úloh pomocí Cronu na Linuxu

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

  1. Jak používám cron v Linuxu

  2. Automatizujte systémové úlohy pomocí crontab na CentOS 7

  3. Jak nastavit automatizaci úloh na Linux VPS pomocí Cronu?

  1. Jak nastavit Cron Job v Linuxu

  2. Jak naplánovat úlohy pomocí příkazu „at“ v systému Linux

  3. Jak zkontrolovat heslo v Linuxu?