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ů:
- Hvězdička (*): K určení všech možných hodnot pro pole
- Pomlčka (-): Na s pecify řadu hodnot
- Čárka (,): Chcete -li zadat seznam hodnot
- 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/crontabZde 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-APokud 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> -APokud 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-AZde 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/skriptSpusť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/skriptSpusť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/skriptPrvní 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/skriptSpouš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/skriptSpusť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/skriptSpusť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:
- @hodinově: Provádění úlohy jednou za hodinu, tj. 0 * * * *
- @půlnoc: Vykonat úlohu jednou denně, tj. 0 0 * * *
- @denně: stejně jako o půlnoci
- @týdně: Vykonávat práci jednou týdně, tj. 0 0 * * 0
- @měsíční: Vykonat úlohu jednou za měsíc, tj. 0 0 1 * *
- @každoročně: Vykonávat práci jednou za rok, tj. 0 0 1 1 *
- @roční: stejné jako @ročně
- @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/skriptPř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-tenZobrazit ú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/crontabBudete 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> -tenKe 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.txtOdebrá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-rPovolení 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.