Cron Jobs: Kompletní výukový program pro začátečníky

Cron Jobs Complete Beginners Tutorial



Cron je nejužitečnější nástroj v operačním systému podobném Linuxu nebo UNIX, který umožňuje spouštění příkazů nebo skriptů v daném plánu bez jakéhokoli zásahu uživatele. Naplánované příkazy a skripty jsou také pojmenovány jako úlohy cron. Většinou se používá k automatizaci opakujících se úloh, jako je spouštění plánovaných záloh, čištění dočasných souborů, údržba systému a různé další opakující se úlohy. Je podobný Plánovači úloh v operačním systému Windows.

V tomto tutoriálu vám poskytneme základní úvod do všeho, co potřebujete pochopit pro plánování úlohy pomocí cron. To zahrnuje základní syntaxi cronu, úpravu souboru crontab, naplánování úlohy pomocí cron s několika příklady, zobrazení úlohy cron atd.







Základy Cron Job

Pojďme porozumět některým základům úlohy cron.



Co je Crond?

Crond je démon v systému Linux, který běží na pozadí a každou minutu kontroluje, zda není v té době naplánována nějaká úloha. Pokud existuje, provede tuto úlohu, jinak zůstane neaktivní.



Syntaxe úlohy Cron

Syntaxe úlohy cron je následující:





* * * * *příkaz/skript

Zleva:

  • První * odpovídá minutám (0-59)
  • Druhý * odpovídá hodinám (0-23)
  • Třetí * odpovídá Dni v měsíci (1-31)
  • Čtvrtý * odpovídá Měsíci roku (1–12)
  • Pátý * odpovídá Dni v týdnu (0-6, neděle až sobota)

Chcete -li v poli zadat více hodnot, použijte následující symboly operátorů:



  1. Hvězdička (*): K určení všech možných hodnot pro pole
  2. Pomlčka (-): Na s pecify řadu hodnot
  3. Čárka (,): Chcete -li zadat seznam hodnot
  4. Oddělovač (/): Chcete -li zadat hodnotu kroku

Úpravy souboru Crontab

Crontab je soubor, který obsahuje naplánované úlohy v konkrétní syntaxi. Existují dva typy souborů crontab; jeden pro úlohy cron specifické pro systém a druhý pro úlohy cron specifické pro uživatele.

Systémové úlohy cron

Cronové úlohy celého systému se nacházejí v /etc/crontab soubor a /etc/cron.d adresáře a jsou spuštěny /etc/cron.hodinu , /etc/cron.daily , /etc/cron.týden a /etc/cron.monthlyly. K těmto souborům má přístup pouze správce systému.

Správce systému může definovat úlohu cron pomocí následujícího příkazu:

$nano /atd/crontab

Zde je syntaxe úlohy v souboru /etc/crontab soubor:

# min hr den měsíce Měsíc den uživatelského jména týdenní týden
* * * * *uživatel 1ifconfig

Uživatelské úlohy cron

Uživatelské úlohy cron se nacházejí v / var / cívka / cron / crontabs adresář. Ačkoli můžete tyto úlohy upravovat ručně, doporučujeme tyto úlohy upravit pomocí příkazu crontab -e.

Standardní uživatel může definovat úlohu cron pomocí následujícího příkazu:

$crontab-A

Pokud jste například přihlášeni jako testovací uživatel, spuštěním příkazu crontab -e se upraví soubor crontab pro testovacího uživatele. Podobně, pokud jste přihlášeni jako uživatel root, příkaz crontab -e upraví soubor crontab pro uživatele root.

Chcete -li upravit soubor crontab pro jiného uživatele, zadejte v Terminálu následující příkaz:

$sudocrontab-u <uživatelské jméno> -A

Pokud jste například přihlášeni jako uživatel test1 a chcete upravit soubor crontab pro uživatele test2, příkaz by byl následující:

$sudocrontab-utest 2-A

Zde je syntaxe úlohy cron, kterou lze přidat do souboru crontab:

# m h den v měsíci měsíc den v týdnu
* * * * * ifconfig

Na zakázkách specifických pro uživatele můžete vidět, že není zadáno žádné uživatelské jméno.

Příkazy Crontab

Příkaz crontab se používá k úpravě, seznamu a odebrání úloh cron:

  • crontab -e Upravit soubor crontab aktuálního uživatele
  • crontab -l K zobrazení obsahu souboru crontab
  • crontab -u [uživatelské jméno] Upravit soubor crontab jiného uživatele
  • crontab -r Odebrání souboru crontab aktuálního uživatele
  • crontab -i Chcete -li zobrazit výzvu před odebráním souboru crontab aktuálního uživatele

Plánování práce s Cronem

S Cronem můžete spustit úlohu v určitém čase, datu a intervalech s minimální jednotkou v minutách, tj. Můžete spustit úlohu každou minutu.

Chcete -li naplánovat úlohu s cronem, otevřete soubor crontab pomocí metody popsané v předchozí části. Jakmile otevřete soubor crontab, budete vyzváni k výběru textového editoru. Zadejte číslo a vyberte preferovaný textový editor. Přejděte dolů do spodní části souboru a přidejte úlohy podle výše popsané syntaxe. Každý řádek v souboru určuje jeden příkaz. Prvních pět položek v řádku určuje naplánovaný čas a poslední položka určuje, který příkaz nebo skript se má spustit.

Příklad:

Následující řádek v souboru crontab naplánuje úlohu cron tak, aby spouštěla ​​příkaz/skript každých 30 minut po 5 hodinách každý den v týdnu od pondělí do soboty.

* /30 5 * * 1-6příkaz/skript

Minut

V tomto poli určujeme minuty, kdy chceme, aby byl příkaz proveden. Je zadán od 0 do 59. * v tomto poli znamená spuštění úlohy každou minutu. Ve výše uvedeném řádku crontab */30 sděluje úloze cron, aby každých 30 minut spustila zadaný příkaz/skript.

Hodiny

V tomto poli určujeme hodiny, kdy chceme, aby byl příkaz proveden. Udává se od 0 do 23. * v tomto poli znamená spuštění úlohy každou hodinu. Ve výše uvedeném řádku crontab hodnota 5 říká úloze cron, aby každých pět hodin spustila zadaný příkaz/skript.

Den v měsíci

V tomto poli určujeme konkrétní dny v měsících, kdy chceme, aby byl příkaz spuštěn. Udává se od 1 do 31. * v tomto poli znamená každý den. Ve výše uvedeném řádku crontab * řekne úloze cron, aby každý den spustila zadaný příkaz/skript.

Měsíc roku

V tomto poli určujeme konkrétní měsíce, kdy chceme, aby byl příkaz spuštěn. Udává se od 1 do 12. * v tomto poli znamená každý měsíc. Ve výše uvedeném řádku crontab * sděluje úloze cron, aby každý měsíc spustila zadaný příkaz/skript.

Den v týdnu

V tomto poli určíme konkrétní dny v týdnu, kdy chceme, aby byl příkaz spuštěn. Udává se od 0 do 6 od neděle do soboty (0 pro neděli a 6 pro sobotu). * V tomto poli znamená každý den v týdnu. Ve výše uvedeném řádku crontab * řekne úloze cron, aby každý den v týdnu spustila zadaný příkaz/skript.

Příklady Cron Jobs

Zde je několik příkladů úloh cron:

Spusťte úlohu cron každých 15 minut

Chcete -li naplánovat spuštění úlohy cron každých 15 minut, přidejte do souboru crontab následující řádek:

* /patnáct * * * *příkaz/skript

Spusťte úlohu cron v 5 hodin ráno každý den

Chcete -li naplánovat spuštění úlohy cron v 5 hodin ráno každý den, přidejte do souboru crontab následující řádek:

0 5 * * *příkaz/skript

Spusťte úlohu cron v 17 hodin každý den

Chcete -li naplánovat spuštění úlohy cron na 17:00 každý den, přidejte do souboru crontab následující řádek:

0 17 * * *příkaz/skript

První den každého měsíce spusťte úlohu cron v 9 hodin ráno

Chcete -li naplánovat spuštění úlohy cron na první den každého měsíce v 9 hodin, přidejte do souboru crontab následující řádek:

0 9 1 * *příkaz/skript

Spouštějte úlohu cron každou hodinu vždy 15. března

Chcete -li naplánovat úlohu cron každou hodinu na 15. března, přidejte do souboru crontab následující řádek:

0 * patnáct 3 *příkaz/skript

Spusťte úlohu cron každých 5 hodin

Chcete -li naplánovat úlohu cron každých 5 hodin, přidejte do souboru crontab následující řádek:

0 * /5 * * *příkaz/skript

Spusťte úlohu cron každých 15 minut

Chcete -li naplánovat spuštění úlohy cron každých 15 minut, přidejte do souboru crontab následující řádek:

* /patnáct * * * *

Použití řetězců

K definování úlohy lze také použít následující řetězce:

  1. @hodinově: Provádění úlohy jednou za hodinu, tj. 0 * * * *
  2. @půlnoc: Vykonat úlohu jednou denně, tj. 0 0 * * *
  3. @denně: stejně jako o půlnoci
  4. @týdně: Vykonávat práci jednou týdně, tj. 0 0 * * 0
  5. @měsíční: Vykonat úlohu jednou za měsíc, tj. 0 0 1 * *
  6. @každoročně: Vykonávat práci jednou za rok, tj. 0 0 1 1 *
  7. @roční: stejné jako @ročně
  8. @restart: Provedení úlohy jednou při každém spuštění

Například pro spuštění skriptu nebo příkazu každý týden by položka v souboru crontab byla:

@týdenní povel/skript

Předdefinované adresáře Cron

V Linuxu existuje několik předdefinovaných adresářů cron, kde jsou uložené skripty automaticky prováděny. Pokud do těchto adresářů umístíme jakýkoli skript, bude automaticky spuštěn v nakonfigurovaném čase.

  • /etc/cron.daily
  • /etc/cron.hodinu
  • /etc/cron.monthlyly
  • /etc/cron.týden

Chcete -li například spustit skript jednou za měsíc, budete jej muset umístit do souboru /etc/cron.monthly.

Zobrazit úlohy Cron

Zobrazit úlohy pro aktuálního uživatele

Následující příkaz použijte k zobrazení všech naplánovaných úloh cron pro aktuálního uživatele:

$crontab-ten

Zobrazit úlohy pro uživatele root

Chcete -li zobrazit všechny naplánované úlohy uživatele root, zadejte v Terminálu následující příkaz:

$kočka /atd/crontab

Budete se muset přihlásit jako uživatel root nebo spustit příkaz jako sudo.

Zobrazit úlohy pro ostatní uživatele

Chcete -li zobrazit všechny naplánované úlohy konkrétního uživatele, zadejte v Terminálu následující příkaz, který nahradí skutečné uživatelské jméno:

$sudocrontab-u <uživatelské jméno> -ten

Ke spuštění tohoto příkazu budete potřebovat oprávnění sudo.

Zobrazit hodinové úlohy cron

Chcete -li zobrazit všechny úlohy cron, které jsou nakonfigurovány tak, aby se spouštěly každou hodinu, zadejte v Terminálu následující příkaz:

$ls -ten /atd/cron.hodinově

Zobrazit denní úlohy cron

Chcete -li zobrazit všechny úlohy cron, které jsou konfigurovány pro každodenní spouštění, zadejte v Terminálu následující příkaz:

$ls -ten /atd/cron.denně/

Zobrazit týdenní úlohy cron

Chcete -li zobrazit všechny úlohy cron, které jsou konfigurovány pro spouštění týdně, zadejte v Terminálu následující příkaz:

$ls -ten /atd/cron.týden/

Zobrazit měsíční cron úlohy

Chcete -li zobrazit všechny úlohy cron, které jsou konfigurovány pro spouštění měsíčně, zadejte v Terminálu následující příkaz:

$ls -ten /atd/cron.měsíčně/

Zálohujte všechny úlohy Cron

Doporučuje se ponechat zálohu všech úloh cron v souboru, abyste se mohli v případě smazání obnovit. Chcete -li zálohovat všechny aktuální úlohy, použijte operátor přesměrování k přesměrování výstupu crontab -l do souboru.

$crontab-ten >backup_cron.txt

Odebrání všech naplánovaných úloh Cron

Chcete -li odebrat všechny naplánované úlohy cron, použijte příznak -r následujícím způsobem:

$crontab-r

Povolení Cron

Přístup k příkazu crontab můžeme omezit pomocí dvou souborů: / etc/cron.allow a/etc/cron.deny.

  • /etc/cron.allow - Přidejte uživatele (jeden na řádek), kterým chcete povolit přístup k příkazům crontab. Tito uživatelé mohou spouštět úlohy plánu.
  • /etc/cron.deny - Přidejte uživatele (jeden na řádek), kterým chcete odepřít přístup k příkazům crontab. Tito uživatelé nemohou spouštět naplánované úlohy.

Generátory syntaxe Crontab

Některé webové stránky umožňují generování syntaxe pro crontabs. Tyto webové stránky usnadňují generování výrazu crontab, aniž by si museli pamatovat syntaxi. Ačkoli pro generátory syntaxe jsou k dispozici různé webové stránky, jako např crontabgenerator.com , crontab-generator.org , a cronmaker.com . Ten, který většinou preferuji a shledávám užitečným, je crontab.guru . Na základě zadání uživatele generuje výraz crontab, který můžete zkopírovat a vložit do souboru crontab.

Závěr

V tomto kurzu jsme vysvětlili základy úloh cron, jejich syntaxi a způsob nastavení. Diskutovali jsme také o tom, jak zobrazit úlohy cron, vytvořit zálohu a odebrat je, pokud již nejsou potřeba.