Android

Plánování cron úloh pomocí crontabu

Visual scheduling with Gantt chart for production and batch orders

Visual scheduling with Gantt chart for production and batch orders

Obsah:

Anonim

Cron je plánovací démon, který provádí úkoly v zadaných intervalech. Tyto úkoly 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 úkolů, jako je zálohování databází nebo dat, aktualizace systému pomocí nejnovějších oprav zabezpečení, kontrola využití místa na disku, odesílání e-mailů atd. Některé aplikace, například Drupal nebo Magento, vyžadují k provedení určitých úkolů úlohy cron.

Úlohy cron lze naplánovat tak, aby se spouštěly o 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. Celosystémové soubory crontab a soubory jednotlivých uživatelů crontab.

Soubory crontab uživatelů jsou uloženy podle jména uživatele a jejich umístění se liší podle operačních systémů. V systému založeném na Red Hat, jako je CentOS, jsou soubory crontab ukládány do adresáře /var/spool/cron zatímco soubory Debian a Ubuntu jsou ukládány do adresáře /var/spool/cron/crontabs .

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

/etc/crontab a soubory v adresáři /etc/cron.d jsou crontab soubory v celém systému, které mohou upravovat pouze správci systému.

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

Syntaxe a operátory Crontab

Každý řádek v souboru crontab uživatele 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 rozsah hodnot oddělených spojovníkem.

  • * - Operátor hvězdičky 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 čárky umožňuje zadat seznam hodnot pro opakování. Například pokud máte 1, 3, 5 v poli Hodina, bude úloha spuštěna v 1:00, 3:00 a 5:00. - - Operátor pomlčky vám umožňuje určit rozsah hodnot. Pokud máte v poli Den v týdnu 1-5 , bude úloha spuštěna každý pracovní den (od pondělí do pátku). / - Operátor lomítka umožňuje určit hodnoty, které se budou opakovat v určitém intervalu mezi nimi. Například pokud máte v poli Hodina */4 , znamená to, ž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 použít také rozsah hodnot, 1-30/10 znamená to samé jako 1, 11, 21 .

Celosystémové soubory Crontab

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

* * * * * command(s) * * * * * command(s)

Předdefinovaná makra

Existuje několik speciálních plánovacích maker Cron používaných k určení běžných intervalů. Tyto zkratky můžete použít namísto specifikace data ve pěti sloupcích.

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

Příkaz Linux Crontab

Příkaz crontab umožňuje nainstalovat nebo otevřít soubor crontab pro úpravy.

Příkaz crontab můžete použít k zobrazení, přidání, odebrání nebo úpravě cron úloh pomocí následujících možností:

  • crontab -e - Upravte soubor crontab nebo jej vytvořte, pokud ještě neexistuje. crontab -l - Zobrazení obsahu souboru crontab. crontab -r - Odstraňte aktuální soubor crontab. crontab -i - Před odebráním rychle odstraňte aktuální soubor crontab. crontab -u - Upravte soubor crontab pro jiné použití. Vyžaduje oprávnění správce systému.

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

Proměnné Crontab

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

  • Výchozí cesta je nastavena na PATH=/usr/bin:/bin . Pokud je příkaz, který voláte, přítomen v zadané cestě cron, můžete použít absolutní cestu k příkazu nebo změnit proměnnou cron $PATH . 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 . Můžete změnit jinou skořepinu změnou proměnné SHELL.Cron vyvolá příkaz z domovského adresáře uživatele. Proměnnou HOME lze přepsat nastavením v crontabu. E-mailové oznámení je zasláno vlastníkovi crontabu. Chcete-li přepsat výchozí chování, můžete použít proměnnou prostředí MAILTO se seznamem (oddělených čárkami) všech e-mailových adres, které chcete dostávat e-mailovými oznámeními. Pokud je MAILTO definováno, ale prázdné ( MAILTO="" ), není odesílána žádná pošta.

Omezení Crontabu

Správci systému mohou řídit, kteří uživatelé mají přístup k příkazu crontab pomocí souborů /etc/cron.deny a /etc/cron.allow . Soubory se skládají ze seznamu uživatelských jmen, jednoho uživatelského jména na řádek.

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

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

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

Příklady úloh Cron

Níže uvádíme několik příkladů úloh cron, které vám ukážou, 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

    Spusťte skript každých 5 minut a přesměrujte 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

    Spouštějte každý příkaz každý pondělí ve 15:00 (použijte operátor && mezi příkazy):

    0 15 * * Mon command1 && command2

    Spusťte skript PHP 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, hodinu od 8:00 do 16:00:

    00 08-16 * * * /path/to/script.sh

    Spusťte skript v první pondělí každého měsíce v 7 hodin

    0 7 1-7 * 1 /path/to/script.sh

    Spusťte skript v 21:15, 1. a 15. dne každého měsíce:

    15 9 1, 15 * * /path/to/script.sh

    Nastavte vlastní proměnné HOME , PATH , SHELL a MAILTO 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

Naučili jste se, jak vytvářet cronové úlohy a naplánovat úkoly k určitému datu a času.

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

terminál cron crontab