GNU/Linux >> Znalost Linux >  >> Linux

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

Cron je plánovací démon, který provádí úlohy v určených intervalech. Tyto úlohy se nazývají úlohy cron a většinou se používají k automatizaci údržby nebo správy systému.

Můžete například nastavit úlohu cron pro automatizaci opakujících se úloh, jako je zálohování databází nebo dat, aktualizace systému nejnovějšími bezpečnostními záplatami, kontrola využití místa na disku, odesílání e-mailů a tak dále.

Spouštění úloh cron lze naplánovat na minutu, hodinu, den v měsíci, měsíc, den v týdnu nebo jakoukoli jejich kombinaci.

Co je soubor Crontab #

Crontab (tabulka cron) je textový soubor, který specifikuje plán úloh cron. Existují dva typy souborů crontab. Soubory crontab pro celý systém a soubory crontab jednotlivých uživatelů.

Soubory crontab uživatelů jsou pojmenovány podle jména uživatele a jejich umístění se liší podle operačních systémů. V distribucích založených na Red Hatu, jako je CentOS, jsou soubory crontab uloženy v /var/spool/cron adresář, zatímco na Debianu a Ubuntu jsou soubory uloženy v /var/spool/cron/crontabs adresář.

Přestože můžete uživatelské soubory crontab upravovat ručně, doporučuje se použít crontab příkaz.

Soubor /etc/crontab a skripty v /etc/cron.d adresář jsou systémové soubory crontab, které mohou upravovat pouze správci systému.

Ve většině distribucí Linuxu můžete skripty vkládat také do /etc/cron.{hourly,daily,weekly,monthly} adresáře a skripty se budou spouštět každou hour/day/week/month .

Syntaxe a operátory Crontab #

Každý řádek v uživatelském souboru crontab obsahuje šest polí oddělených mezerou následovanou příkazem, který má být spuštěn.

* * * * * command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

Prvních pět polí může obsahovat jednu nebo více hodnot oddělených čárkou nebo rozsahem hodnot oddělených pomlčkou.

  • * - Operátor hvězdička znamená jakoukoli hodnotu nebo vždy. Pokud máte v poli Hodina symbol hvězdičky, znamená to, že úkol bude proveden každou hodinu.
  • , - Operátor čárka umožňuje zadat seznam hodnot pro opakování. Pokud máte například 1,3,5 v poli Hodina se úloha spustí v 1:00, 3:00 a 5:00.
  • - - Operátor pomlčky umožňuje zadat rozsah hodnot. Pokud máte 1-5 v poli Den v týdnu bude úloha spuštěna každý pracovní den (od pondělí do pátku).
  • / - Operátor lomítka umožňuje zadat hodnoty, které se budou v určitém intervalu mezi nimi opakovat. Pokud máte například */4 v poli Hodina to znamená, že akce bude provedena každé čtyři hodiny. Je to stejné jako zadání 0,4,8,12,16,20 . Místo hvězdičky před operátorem lomítka můžete také použít rozsah hodnot 1-30/10 znamená totéž jako 1,11,21 .

Soubory Crontab pro celý systém #

Syntaxe celosystémových souborů crontab se mírně liší od uživatelských crontabů. Obsahuje další povinné uživatelské pole, které určuje, který uživatel spustí úlohu cron.

* * * * * <username> command(s)

Předdefinovaná makra #

K určení společných intervalů se používá několik speciálních plánovacích maker Cron. Tyto zkratky můžete použít místo pětisloupcové specifikace data.

  • @yearly (nebo @yearly ) - Spusťte zadanou úlohu jednou ročně o půlnoci (00:00) 1. ledna. Ekvivalent 0 0 1 1 * .
  • @monthly - Spusťte zadanou úlohu jednou za měsíc o půlnoci prvního dne v měsíci. Ekvivalent 0 0 1 * * .
  • @weekly - Spusťte zadanou úlohu jednou týdně v neděli o půlnoci. Ekvivalent 0 0 * * 0 .
  • @daily - Spusťte zadanou úlohu jednou denně o půlnoci. Ekvivalent 0 0 * * * .
  • @hourly - Spusťte zadanou úlohu jednou za hodinu na začátku hodiny. Ekvivalent 0 * * * * .
  • @reboot - Spusťte zadanou úlohu při spuštění systému (při spuštění).

Příkaz Linux Crontab #

crontab umožňuje nainstalovat, zobrazit nebo otevřít soubor crontab pro úpravy:

  • crontab -e – Upravte soubor crontab nebo jej vytvořte, pokud ještě neexistuje.
  • crontab -l - Zobrazit obsah souboru crontab.
  • crontab -r - Odeberte aktuální soubor crontab.
  • crontab -i - Před odstraněním odeberte aktuální soubor crontab s výzvou.
  • crontab -u <username> - Upravit soubor crontab jiného uživatele. Tato možnost vyžaduje oprávnění správce systému.

Příkaz crontab otevře soubor crontab pomocí editoru určeného VISUAL nebo EDITOR proměnné prostředí.

Proměnné Crontab #

Démon cron automaticky nastavuje několik proměnných prostředí.

  • Výchozí cesta je nastavena na PATH=/usr/bin:/bin . Pokud se příkaz, který provádíte, nenachází v zadané cestě cronu, můžete buď použít absolutní cestu k příkazu, nebo změnit cron $PATH variabilní. Nemůžete implicitně připojit :$PATH jako byste to udělali s běžným skriptem.
  • Výchozí prostředí je nastaveno na /bin/sh . Chcete-li změnit jiný shell, použijte SHELL proměnná.
  • Cron vyvolá příkaz z domovského adresáře uživatele. HOME proměnnou lze nastavit v crontab.
  • E-mailové upozornění je odesláno vlastníkovi crontab. Chcete-li přepsat výchozí chování, můžete použít MAILTO proměnná prostředí se seznamem (odděleným čárkou) všech e-mailových adres, na které chcete dostávat e-mailová upozornění. Když MAILTO je definován, ale prázdný (MAILTO="" ), není odeslána žádná pošta.

Omezení Crontab #

Soubor /etc/cron.deny a /etc/cron.allow souborů umožňuje řídit, kteří uživatelé mají přístup k crontab příkaz. Soubory se skládají ze seznamu uživatelských jmen, jedno uživatelské jméno na řádek.

Ve výchozím nastavení pouze /etc/cron.deny soubor existuje a je prázdný, což znamená, že příkaz crontab mohou používat všichni uživatelé. Pokud chcete konkrétnímu uživateli odepřít přístup k příkazům crontab, přidejte uživatelské jméno do tohoto souboru.

Pokud /etc/cron.allow soubor existuje pouze uživatelé, kteří jsou uvedeni v tomto souboru, mohou používat crontab příkaz.

Pokud žádný ze souborů neexistuje, mohou crontab používat pouze uživatelé s oprávněními správce příkaz.

Příklady úloh Cron #

Níže jsou uvedeny příklady úloh cron, které ukazují, jak naplánovat spuštění úlohy v různých časových obdobích.

  • Spusťte příkaz v 15:00 každý den od pondělí do pátku:

    0 15 * * 1-5 command
  • Spustit skript každých 5 minut a přesměrovat standardní výstup na dev null , na zadanou e-mailovou adresu bude odeslána pouze standardní chyba:

    [email protected]
    */5 * * * * /path/to/script.sh > /dev/null
  • Spusťte dva příkazy každé pondělí v 15:00 (použijte operátor && mezi příkazy):

    0 15 * * Mon command1 && command2
  • Spusťte PHP skript každé 2 minuty a zapište výstup do souboru:

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log
  • Spusťte skript každý den, každou hodinu, každou hodinu, od 8:00 do 16:00:

    00 08-16 * * * /path/to/script.sh
  • Spusťte skript každé první pondělí v měsíci v 7:00

    0 7 1-7 * 1 /path/to/script.sh
  • Spusťte skript a ve 21:15, 1. a 15. dne každého měsíce:

    15 9 1,15 * * /path/to/script.sh
  • Nastavte vlastní HOME , PATH , SHELL a MAILTO proměnné a každou minutu spusťte příkaz.

    HOME=/opt
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    SHELL=/usr/bin/zsh
    [email protected]
    
    */1 * * * * command

Závěr č.

Cron je démon, který vám umožňuje plánovat úkoly na konkrétní datum a čas.

Pokud máte nějaké dotazy, neváhejte zanechat komentář.


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

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

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

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

  2. Jak nainstalovat, upravit nebo odebrat úlohy Cron v dávkovém režimu

  3. Obnovte úlohy cron omylem odstraněné pomocí crontab -r

  1. Odstraňování problémů s úlohami Cron

  2. Používáte Notify-Send s Cronem?

  3. Cron s upozorněním-odeslat