GNU/Linux >> Znalost Linux >  >> Linux

Cron Job:Komplexní průvodce pro začátečníky 2022

Dělat stejný úkol znovu a znovu může být docela fuška. Plánování úloh cron umožňuje uživatelům automatizovat úlohy na virtuálním privátním serveru nebo jakémkoli operačním systému podobném Unixu. To šetří drahocenný čas a umožňuje uživatelům soustředit se na jiné základní úkoly.

V této komplexní příručce pro začátečníky se naučíte základy úloh cron, včetně jejich typů, syntaxe, speciálních řetězců a oprávnění. Na konci tohoto článku budete moci používat úlohy cron k efektivnějšímu plánování úloh.

Co je to Cron Job?

Cron je obslužný program, který umožňuje uživatelům zadávat příkazy pro plánování úloh opakovaně v určitý čas. Úlohy naplánované v cronu se nazývají úlohy cron . Uživatelé mohou určit, jaký druh úlohy chtějí automatizovat a kdy se má provést.

Cron je démon – proces na pozadí provádějící neinteraktivní úlohy. V systému Windows možná znáte procesy na pozadí, jako jsou Služby které fungují podobně jako démon cron.

Démon je vždy nečinný a čeká na příkaz, který jej požádá o provedení konkrétní úlohy. Příkaz lze zadat na libovolném počítači v síti.

Soubor cron je jednoduchý textový soubor, který obsahuje příkazy, které se mají pravidelně spouštět v určitou dobu. Výchozí systémová tabulka cron nebo konfigurační soubor crontab je /etc/crontab , který se nachází v adresáři crontab /etc/cron.*/ .

Systémový soubor crontab mohou upravovat pouze správci systému. Operační systémy podobné Unixu však podporují více správců. Každý může vytvořit soubor crontab a napsat příkazy pro provádění úloh, kdykoli bude chtít.

Pomocí úloh cron mohou uživatelé automatizovat údržbu systému, monitorování místa na disku a plánovat zálohování. Vzhledem ke své povaze jsou úlohy cron skvělé pro počítače, které pracují 24 hodin denně, 7 dní v týdnu, jako jsou servery.

Zatímco úlohy cron využívají především správci systému, mohou být přínosné i pro webové vývojáře.

Jako správce webu můžete například nastavit jednu úlohu cron pro automatické zálohování vašeho webu každý den o půlnoci, další pro kontrolu nefunkčních odkazů každé pondělí o půlnoci a třetí pro vymazání mezipaměti webu každý pátek v poledne.

Nicméně jako každý jiný program má cron omezení, která byste měli zvážit před jeho použitím:

  • Nejkratší interval mezi úlohami je 60 sekund . S cronem nebudete moci opakovat úlohu každých 59 sekund nebo méně.
  • Centralizované na jednom počítači. Úlohy cronu nelze distribuovat do více počítačů v síti. Pokud tedy dojde k selhání počítače se spuštěným cronem, naplánované úlohy nebudou provedeny a zmeškané úlohy bude možné spustit pouze ručně.
  • Žádný mechanismus automatického opakování . Cron je navržen tak, aby běžel v přesně stanovených časech. Pokud se úloha nezdaří, nespustí se znovu až do dalšího naplánovaného času. To dělá cron nevhodným pro přírůstkové úlohy.

S těmito omezeními je cron vynikajícím řešením pro jednoduché úlohy, které běží v určitou dobu s pravidelnými intervaly alespoň 60 sekund.

Pokud chcete naplánovat jednorázovou úlohu na později, možná budete chtít použít jinou metodu.

Základní operace Cron Job Operations

Tento tutoriál vám ukáže, jak naplánovat úlohy cron zadáním příkazů do programu shellu, jako je Bash na Linuxu nebo jiném unixovém operačním systému.

Hostingerův VPS hosting běží na operačním systému založeném na Linuxu. Naučit se plánovat úlohy cron tedy výrazně zvýší efektivitu vaší práce jako správce VPS. Příkazový řádek pro VPS je přístupný přes PuTTY SSH.

Než budete pokračovat se základními operacemi cronu, je nezbytné znát různé konfigurační soubory cronu:

  • Crontab systému. Použijte jej k plánování důležitých úloh pro celý systém, které lze změnit pouze s právy root.
  • Uživatel crontab. Tento soubor umožňuje uživatelům vytvářet a upravovat úlohy cron, které platí pouze na úrovni uživatele.

Pokud chcete upravit systémový crontab, ujistěte se, že aktuální uživatel má práva root.

Níže jsou uvedeny některé základní operace, které cron může provádět:

Vytvoření nebo úprava souboru crontab , zadejte do příkazového řádku následující:

crontab -e

Pokud ve vašem systému nejsou nalezeny žádné soubory crontab, příkaz automaticky vytvoří nový. crontab -e umožňuje přidávat, upravovat a odstraňovat úlohy cron.

Budete potřebovat textový editor, jako je vi nebo nano pro úpravu souboru crontab. Při zadánícrontab -e poprvé budete požádáni, abyste vybrali, pomocí kterého textového editoru chcete soubor upravit.

Zobrazení seznamu aktivních naplánovaných úloh ve svém systému zadejte následující příkaz:

crontab -l

Pokud má váš systém více uživatelů, můžete zobrazit jejich seznamy souborů crontab zadáním následujícího příkazu jako superuživatel:

crontab -u username -l

Můžete také snadno upravit naplánované úlohy ostatních uživatelů zadáním následujícího příkazu crontab:

sudo su crontab -u username -e

Abyste si udělili práva root , připojte sudo su na začátek příkazu. Některé příkazy, včetně tohoto, mohou provádět pouze uživatelé root.

Nakonec smažete všechny naplánované úlohy do souboru crontab a začněte znovu, zadejte následující příkaz:

crontab -r

Případně je následující příkaz stejný jako crontab -r , kromě toho, že před odebráním crontab vyzve uživatele volbou ano/ne:

crontab -i

Kromě crontab může uživatel root také přidávat úlohy cron do etc/cron.d adresář. Je nejvhodnější pro spouštění skriptů pro automatické instalace a aktualizace.

Mějte na paměti, že uživatel, který do tohoto adresáře přidává úlohy cron, musí mít přístup root a musí splňovat konvence pojmenování run-parts.

Alternativně může uživatel root přesunout své skripty do následujících adresářů a naplánovat jejich spuštění:

  • /etc/cron.hourly/ – Spouštět všechny skripty jednou za hodinu
  • /etc/cron.daily/ – Běhejte jednou denně.
  • /etc/cron.weekly/ – Běhejte jednou týdně.
  • /etc/cron.monthly/ – Běhejte jednou za měsíc.

Syntaxe Crontab

Chcete-li vytvořit úlohu cronu, musíte nejprve porozumět syntaxi a formátování cronu. V opačném případě nemusí být správné nastavení úloh cronu možné.

Syntaxe crontab se skládá z pěti polí s následujícími možnými hodnotami:

  • minuta. Minuta v hodině, ve které bude příkaz spuštěn, v rozsahu 0–59.
  • Hodina. Hodina, ve kterou bude příkaz spuštěn, v rozsahu od 0 do 23 ve 24hodinovém zápisu.
  • Den v měsíci . Den v měsíci, kdy si uživatel přeje, aby byl příkaz spuštěn, v rozmezí 1–31.
  • Měsíc . Měsíc, ve kterém uživatel chce, aby byl příkaz spuštěn, v rozmezí od 1 do 12, což představuje leden až prosinec.
  • Den v týdnu. Den v týdnu, kdy se má příkaz spustit, v rozsahu od 0 do 6, představující neděli až sobotu. V některých systémech představuje hodnota 7 neděli.

Nenechávejte žádné pole prázdné.

Pokud například chcete nastavit úlohu cron pro spouštění root/backup.sh každý pátek v 17:37 by měl váš příkaz cron vypadat takto:

37 17 * * 5 root/backup.sh

Ve výše uvedeném příkladu 37 a 17 představují 17:37. Obě hvězdičky pro Den v měsíci a Měsíc pole označují všechny možné hodnoty. To znamená, že úkol by se měl opakovat bez ohledu na datum nebo měsíc. Nakonec 5 představuje pátek. Za sadou čísel pak následuje umístění samotného úkolu.

Pokud si nejste jisti ručním zápisem syntaxe cron, můžete použít bezplatné nástroje jako Crontab Generator nebo Crontab.guru a vygenerovat přesná čísla pro čas a datum, které chcete pro svůj příkaz.

Chcete-li nastavit správný čas pro příkaz cron, je nezbytná znalost operátorů úloh cron. Umožňují vám určit, které hodnoty chcete zadat do jednotlivých polí. Ve všech souborech crontab musíte používat správné operátory.

  • Hvězdička (*) . Tento operátor použijte k označení všech možných hodnot v poli. Pokud například chcete, aby se úloha cron spouštěla ​​každou minutu, napište hvězdičku do pole Minuta pole.
  • Čárka (,) . Pomocí tohoto operátoru vypíšete více hodnot. Například psaní1,5 v Dni v týdnu pole naplánuje provedení úlohy každé pondělí a pátek.
  • Pomlčka (-) . Tento operátor použijte k určení rozsahu hodnot. Pokud například chcete nastavit úlohu cron od června do září, napište 6-9 v měsíci pole to udělá.
  • Oddělovač (/) . Tento operátor použijte k rozdělení hodnoty. Pokud například chcete, aby se skript spouštěl každých dvanáct hodin, napište */12 v hodinu pole.
  • Poslední (L) . Tento operátor lze použít v polích den v měsíci a den v týdnu. Například psaní 3L v poli den v týdnu znamená poslední středu v měsíci.
  • Den v týdnu (W) . Tento operátor použijte k určení nejbližšího dne v týdnu od daného času. Pokud například 1. měsícem je sobota a píše se 1 W v poli den v měsíci spustí příkaz následující pondělí (3. ).
  • Hash (#). Pomocí tohoto operátoru určete den v týdnu, za kterým následuje číslo v rozsahu od 1 do 5. Například 1#2 znamená druhé pondělí v měsíci.
  • Otazník (?) . Pomocí tohoto operátoru zadejte „žádnou konkrétní hodnotu“ do polí „den v měsíci“ a „den v týdnu“.

Cron Job Special Strings

Speciální řetězce se používají k plánování úloh cron v časových intervalech, aniž by uživatel musel zjišťovat logickou sadu čísel, která mají zadávat. Chcete-li je použít, napište @ následuje jednoduchá fráze.

Zde je několik užitečných speciálních řetězců, které můžete použít v příkazech:

  • @hodinová . Úloha bude probíhat jednou za hodinu.
  • @denně nebo @midnight . Tyto řetězce spustí úlohu každý den o půlnoci.
  • @weekly . Použijte toto ke spouštění úloh jednou týdně v neděli o půlnoci.
  • @měsíčně. Tento speciální řetězec spustí příkaz jednou první den každého měsíce.
  • @roční . Použijte toto ke spuštění úlohy jednou ročně o půlnoci 1. ledna.
  • @reboot . S tímto řetězcem se úloha spustí pouze jednou při spuštění.

Důležité! Při plánování úloh cron citlivých na časové pásmo dbejte zvýšené opatrnosti.

Příklady syntaxe Cron

Nyní, když víte, jak správná syntaxe cron vypadá, projdeme si několik příkladů, které vám pomohou lépe porozumět.

Mějte na paměti, že výstup cronu bude automaticky odeslán na váš místní e-mailový účet. Pokud chcete přestat dostávat e-maily, můžete přidat >/dev/null 2>&1 na příkaz jako v následujícím příkladu:

0 5 * * * /root/backup.sh >/dev/null 2>&1

Pokud chcete odeslat výstup na konkrétní e-mailový účet, přidejte MAILTO následuje e-mailová adresa. Zde je příklad:

MAILTO="[email protected]"
0 3 * * * /root/backup.sh >/dev/null 2>&1

Podívejte se na následující ukázkové příkazy, abyste lépe porozuměli syntaxi cron:

Příklad Vysvětlení
0 0 * * 0 /root/backup.sh Proveďte zálohu každou neděli o půlnoci.
0 * * * 1 /root/clearcache.sh Vymažte mezipaměť každou hodinu v pondělí.
0 6,18 * * * /root/backup.sh Zálohujte data dvakrát denně v 6:00 a 18:00.
*/10 * * * * /scripts/monitor.sh Provádějte monitorování každých 10 minut.
*/15 * * * * /root/backup.sh Proveďte zálohu každých 15 minut.
* * 20 7 * /root/backup.sh Proveďte zálohu každou minutu 20. července.
0 22 * ​​* 1-5 /root/clearcache.sh Vymažte mezipaměť každý všední den (pondělí až pátek) ve 22:00.
0 0 * * 2 * /root/backup.sh Proveďte zálohu každé úterý o půlnoci.
* * * 1,2,5 * /scripts/monitor.sh Během ledna, února a května provádějte monitorování každou minutu.
10-59/10 5 * * * /root/clearcache.sh Vymažte mezipaměť každých 10 minut v 5:00, počínaje 5:10.
0 8 1 */3 * /home/user/script.sh Nechte úlohu spouštět čtvrtletně první den v měsíci v 8:00.
0 * * * * /root/backup.sh Vytvořte zálohu každou hodinu.
* * * * * /scripts/script.sh; /scripts/scrit2.sh Zahrnout více úloh do jedné úlohy cron. Užitečné pro plánování více úloh ke spuštění současně.
@reboot /root/clearcache.sh Vymažte mezipaměť při každém zapnutí systému.
0 8 1-7 * 1 /scripts/script.sh Spusťte skript každé první pondělí v měsíci v 8:00.
5 4 * * 0 /root/backup.sh Vytvořte zálohu každou neděli ve 4:05.
15 9 1,20 * * /scripts/monitor.sh Provádějte monitorování ve 21:15 1. a 20. dne každého měsíce.
@hourly /scripts/monitor.sh Provádějte monitorování každou hodinu.
0 0 1,15 * 3 /scripts/script.sh Spusťte skript o půlnoci každou středu mezi 1. a 15. dnem každého měsíce.
15 14 1 * * /root/clearcache.sh Vymažte mezipaměť prvního dne každého měsíce ve 14:15.
00 08-17 * * 1-5 bin/check-db-status Stav databáze kontrolujte každý den od pondělí do pátku každou hodinu od 8 do 17 hodin.
15 6 1 1 * /root/backup.sh Proveďte zálohu každého 1. ledna v 6:15.
0 0 * * * /scripts/monitor.sh Spouštějte monitorovací skript jednou denně o půlnoci.
0 0 15 * * /root/clearcache.sh Vymažte mezipaměť o půlnoci 15. dne každého měsíce.
* * * * 1,5 /scripts/monitor.sh Provádění monitorování každé pondělí a pátek.

Cron oprávnění

Následující dva soubory lze vytvořit nebo upravit, aby bylo možné uživatelům povolit nebo omezit používání systémového souboru cron:

  • /etc/cron.allow – pokud cron.allow existuje, měl by obsahovat jméno uživatele, aby mohl používat úlohy cron.
  • /etc/cron.deny – pokud cron.allow neexistuje, ale cron.deny ano, uživatel, který chce používat úlohy cron, nesmí být v souboru uveden.

Závěr

Nastavení automaticky naplánovaných úloh je praktické řešení, které vám zabrání zapomenout na důležité úkoly.

Úlohy Cron jsou pro systémové administrátory a webové vývojáře vynikajícím způsobem, jak spravovat opakující se úkoly. Vše, co je potřeba udělat, je zadat správné příkazy a zvolit správný čas provedení.

Chcete-li naplánovat úlohu cron, použijte správnou syntaxi v příkazovém řádku. Případně můžete použít speciální struny pro usnadnění procesu. Nezapomeňte přidělit správná oprávnění, aby k souboru cron měli přístup pouze oprávnění uživatelé.

Pokud hledáte řešení specifické pro WordPress, podívejte se na náš výukový program úlohy cron pro WordPress.

Doufáme, že vám tento článek pomohl pochopit základy používání úloh cron k plánování úloh. Pokud máte nějaké dotazy, neváhejte je zanechat v sekci komentářů.


Linux
  1. Průvodce linuxovým terminálem pro začátečníky

  2. Použití at pro jednorázové úlohy cron v Linuxu

  3. YAML pro začátečníky

  1. Úvod do virtualizace:Komplexní průvodce pro začátečníky

  2. CentOS / RHEL:Průvodce cronem pro začátečníky

  3. Intenzivní úlohy cronu nebo naplánované úlohy

  1. Jak nastavit úlohy cron v cPanel

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

  3. Nastavení úlohy Godaddy cron pro spouštění php skriptu