GNU/Linux >> Znalost Linux >  >> Linux

Linux Crontab:15 úžasných příkladů úloh Cron

Zkušený správce systému Linux ví, jak důležité je automatické spouštění úloh rutinní údržby na pozadí.

Utilita Linux Cron je efektivní způsob, jak naplánovat rutinní úlohy na pozadí na konkrétní čas a/nebo den na průběžné bázi.

Tento článek je součástí probíhající série Tipy pro produktivitu pro nadšence. V tomto článku se podíváme na 15 úžasných příkladů plánování úloh crontab.

Formát Linux Crontab

MIN HOUR DOM MON DOW CMD
Tabulka:Pole Crontab a povolené rozsahy (Linuxová syntaxe Crontab)
Pole Popis Povolená hodnota
MIN Pole minuty 0 až 59
HODINA Pole hodin 0 až 23
DOM Den v měsíci 1–31
PO Pole Měsíc 1–12
DOW Den v týdnu 0–6
CMD Příkaz Jakýkoli příkaz, který se má provést.

1. Naplánování úlohy na konkrétní čas

Základní použití cronu je provést úlohu v konkrétním čase, jak je uvedeno níže. Tím se spustí skript Úplná záloha (úplná záloha) 10. června 08:30 .

Upozorňujeme, že časové pole používá 24hodinový formát. Takže pro 8:00 použijte 8 a pro 20:00 použijte 20.

30 08 10 06 * /home/ramesh/full-backup
  • 30 – 30. minuta
  • 08 – 08:00
  • 10 – 10. den
  • 06 – 6. měsíc (červen)
  • * – Každý den v týdnu

2. Naplánujte si úlohu na více než jednu instanci (např. dvakrát denně)

Následující skript provádí přírůstkovou zálohu dvakrát denně každý den.

V tomto příkladu se každý den v 11:00 a 16:00 spustí zadaný skript shellu přírůstkové zálohy (incremental-backup). Hodnota oddělená čárkami v poli určuje, že příkaz musí být proveden po celou uvedenou dobu.

00 11,16 * * * /home/ramesh/bin/incremental-backup
  • 00 – 0. minuta (horní část hodiny)
  • 11,16 – 11:00 a 16:00
  • * – Každý den
  • * – Každý měsíc
  • * – Každý den v týdnu

3. Naplánujte si úlohu na konkrétní časový úsek (např. pouze ve všední dny)

Pokud chcete, aby byla úloha naplánována na každou hodinu v určitém časovém rozmezí, použijte následující.

Cron Job každý den během pracovní doby

Tento příklad kontroluje stav databáze každý den (včetně víkendů) v pracovní době 9:00 – 18:00

00 09-18 * * * /home/ramesh/bin/check-db-status
  • 00 – 0. minuta (horní část hodiny)
  • 09–18 – 9:00, 10:00, 11:00, 12:00, 13:00, 14:00, 15:00, 16:00, 17:00, 18:00
  • * – Každý den
  • * – Každý měsíc
  • * – Každý den v týdnu

Cron Job každý pracovní den během pracovní doby

Tento příklad kontroluje stav databáze každý všední den (tj. kromě So a Ne) v pracovní době 9:00 – 18:00

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
  • 00 – 0. minuta (horní část hodiny)
  • 09–18 – 9:00, 10:00, 11:00, 12:00, 13:00, 14:00, 15:00, 16:00, 17:00, 18:00
  • * – Každý den
  • * – Každý měsíc
  • 1–5 -Po, Út, St, Čt a Pá (každý všední den)

4. Jak zobrazit záznamy Crontab?

Zobrazit položky Crontab aktuálně přihlášeného uživatele

Chcete-li zobrazit položky crontab, zadejte crontab -l z vašeho unixového účtu, jak je uvedeno níže.

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[Note: This displays crontab of the current logged in user]

Zobrazit položky Root Crontab

Přihlaste se jako uživatel root (su – root) a proveďte crontab -l, jak je uvedeno níže.

root@dev-db# crontab -l
no crontab for root

Crontab HowTo:Zobrazení záznamů Crontabs jiných uživatelů Linuxu

Chcete-li zobrazit položky crontab jiných uživatelů Linuxu, přihlaste se do root a použijte -u {uživatelské jméno} -l jak je uvedeno níže.

root@dev-db# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
00 09-18 * * * /home/sathiya/check-db-status

5. Jak upravit záznamy Crontab?

Upravit záznamy Crontab aktuálního přihlášeného uživatele

Chcete-li upravit položky crontab, použijte crontab -e, jak je uvedeno níže. Ve výchozím nastavení se tímto upraví crontab aktuálně přihlášených uživatelů.

ramesh@dev-db$ crontab -e
@yearly /home/ramesh/centos/bin/annual-maintenance
*/10 * * * * /home/ramesh/debian/bin/check-disk-space
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

[Note: This will open the crontab file in Vim editor for editing.
Please note cron created a temporary /tmp/crontab.XX... ]

Když uložíte výše uvedený dočasný soubor pomocí :wq, uloží se crontab a zobrazí se následující zpráva oznamující, že crontab byl úspěšně upraven.

~
"crontab.XXXXyjWkHw" 2L, 83C written
crontab: installing new crontab

Upravit položky Root Crontab

Přihlaste se jako uživatel root (su – root) a proveďte crontab -e, jak je uvedeno níže.

root@dev-db# crontab -e

Upravit položky Crontab souboru jiného uživatele systému Linux

Chcete-li upravit položky crontab jiných uživatelů Linuxu, přihlaste se do root a použijte -u {uživatelské jméno} -e jak je uvedeno níže.

root@dev-db# crontab -u sathiya -e
@monthly /home/sathiya/fedora/bin/monthly-backup
00 09-18 * * * /home/sathiya/ubuntu/bin/check-db-status
~
~
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

6. Naplánujte si úlohu na každou minutu pomocí Cron.

V ideálním případě nemusíte mít požadavek naplánovat práci každou minutu. Ale pochopení tohoto příkladu vám pomůže pochopit další příklady uvedené níže v tomto článku.

* * * * * CMD

* znamená všechny možné jednotky – tj. každou minutu každou hodinu po celý rok. Více než použití tohoto * přímo, zjistíte, že je velmi užitečné v následujících případech.

  • Pokud v poli minut zadáte */5, znamená to každých 5 minut.
  • Pokud v poli minut zadáte hodnotu 0-10/2, znamená to každé 2 minuty během prvních 10 minut.
  • Výše uvedenou konvenci lze tedy použít pro všechna další 4 pole.

7. Naplánujte si úlohu Cron na pozadí na každých 10 minut.

Pokud chcete každých 10 minut kontrolovat místo na disku, použijte následující.

*/10 * * * * /home/ramesh/check-disk-space

Provádí zadaný příkaz check-disk-space každých 10 minut po celý rok. Ale můžete mít požadavek na provedení příkazu pouze v pracovní době nebo naopak. Výše uvedené příklady ukazují, jak tyto věci dělat.

Místo zadávání hodnot do 5 polí je můžeme zadat pomocí jediného klíčového slova, jak je uvedeno níže.

Existují zvláštní případy, kdy místo výše uvedených 5 polí můžete použít @ následované klíčovým slovem – například restart, půlnoc, rok, hodina.

Tabulka:Speciální klíčová slova Cron a jejich význam
Klíčové slovo Ekvivalentní
@ročně 0 0 1 1 *
@daily 0 0 * * *
@hourly 0 * * * *
@reboot Spustit při spuštění.

8. Naplánujte si práci na první minutu každého roku pomocí @yearly

Pokud chcete, aby byla úloha provedena první minutu každého roku, můžete použít @roční klíčové slovo cron, jak je uvedeno níže.

Toto provede roční údržbu systému pomocí skriptu roční údržby v 00:00 1. ledna pro každý rok.

@yearly /home/ramesh/red-hat/bin/annual-maintenance

9. Naplánujte si Cron Job na začátek každého měsíce pomocí @monthly

Je to podobné jako u @ročního jako výše. Příkaz však provede jednou měsíčně pomocí @monthly klíčové slovo cron.

Toto provede zálohu skriptu shellu tape-backup v 00:00 1. každého měsíce.

@monthly /home/ramesh/suse/bin/tape-backup

10. Naplánujte si práci na pozadí každý den pomocí @daily

Pomocí @daily cron, toto provede denní čištění souboru protokolu pomocí skriptu cleanup-logs shell scriptat v 00:00 každý den.

@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"

11. Jak provést příkaz Linux po každém restartu pomocí @reboot?

Pomocí @reboot cron, toto provede zadaný příkaz jednou po každém spuštění počítače.

@reboot CMD

12. Jak zakázat/přesměrovat výstup pošty Crontab pomocí klíčového slova MAIL?

Ve výchozím nastavení crontab odesílá výstup úlohy uživateli, který úlohu naplánoval. Pokud chcete výstup přesměrovat na konkrétního uživatele, přidejte nebo aktualizujte proměnnou MAIL v crontab, jak je znázorněno níže.

ramesh@dev-db$ crontab -l
MAIL="ramesh"

@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[Note: Crontab of the current logged in user with MAIL variable]


Pokud jste nechtěli, aby se pošta nikam neposílala, tj. abyste zastavili odesílání výstupu crontab e-mailem, přidejte nebo aktualizujte proměnnou MAIL v crontab, jak je znázorněno níže.

MAIL=""

13. Jak provádět úlohy linuxového Cron každou sekundu pomocí Crontab.

Nemůžete naplánovat každou sekundu cronjob. Protože v cronu je minimální jednotka, kterou můžete zadat, minuta. V typickém scénáři není pro většinu z nás důvod spouštět v systému každou sekundu jakoukoli úlohu.

14. Zadejte proměnnou PATH v Crontab

Ve všech výše uvedených příkladech jsme zadali absolutní cestu linuxového příkazu nebo skriptu shellu, který je třeba spustit.

Například místo zadání /home/ramesh/tape-backup, pokud chcete zadat pouze tape-backup, přidejte cestu /home/ramesh do proměnné PATH v crontab, jak je znázorněno níže.

ramesh@dev-db$ crontab -l

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh

@yearly annual-maintenance
*/10 * * * * check-disk-space

[Note: Crontab of the current logged in user with PATH variable]

15. Instalace Crontabu ze souboru Cron

Místo přímé úpravy souboru crontab můžete také nejprve přidat všechny položky do souboru cron. Jakmile budete mít všechny tyto položky v souboru, můžete je nahrát nebo nainstalovat do cronu, jak je uvedeno níže.

ramesh@dev-db$ crontab -l
no crontab for ramesh

$ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

ramesh@dev-db$ crontab cron-file.txt

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

Poznámka: Tím se nainstaluje soubor cron-file.txt do vašeho crontab, což také odstraní vaše staré záznamy cron. Buďte tedy opatrní při nahrávání záznamů cron ze souboru cron-file.txt.

Další Cron tutoriály

  • Cron vs Anacron:Jak nastavit Anacron na Linuxu (s příkladem)
  • Jak spouštět Cron každých 5 minut, sekund, hodin, dnů, měsíců
  • 6 příkladů příkazů Linux Crontab
  • Jak nainstalovat, upravit nebo odebrat úlohy Cron v dávkovém režimu
  • Pochopte příkazy at, atq, atrm, batch pomocí 9 příkladů

Úžasné články o Linuxu

Následuje několik úžasných 15 příkladů články, které by vám mohly pomoci.

  • Mami, našel jsem to! — 15 praktických příkladů hledání příkazů pro Linux
  • 15 příkladů zvládnutí historie příkazového řádku Linuxu
  • Příkaz Unix LS:15 praktických příkladů
  • Ovládněte Grep! – 15 praktických příkladů příkazů Grep

Linux
  1. 4 alternativy cronu v Linuxu

  2. Jak používat cron na Linuxu

  3. 7 Příklady příkazů Linux df

  1. 8 Příklady příkazů Linux TR

  2. Příklady příkazů rm v Linuxu

  3. Příklady příkazů ps v Linuxu

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

  2. 6 Příklady příkazů Linux Crontab

  3. Linux:Spusťte úlohu cron v popředí