Někdy můžete mít úkoly, které je třeba provádět pravidelně nebo v určitých předem definovaných intervalech. Mezi takové úkoly patří zálohování databází, aktualizace systému, provádění pravidelných restartů a tak dále. Takové úlohy se v linuxu označují jakocron jobs (Crontab). Úlohy cron se používají k automatizaci úloh které se hodí a pomáhají zjednodušit provádění opakujících se a někdy světských úkolů. Cron je démon, který vám umožňuje naplánovat tyto úlohy, které se pak provádějí v určených intervalech. V tomto tutoriálu se naučíte plánovat úlohy pomocí úloh cron.
Soubor Crontab
Soubor crontab, známý také jako cron tabulka , je jednoduchý textový soubor, který obsahuje pravidla nebo příkazy určující časový interval provádění úlohy. Existují dvě kategorie souborů crontab:
1) Soubor crontab pro celý systém
Obvykle je používají služby Linuxu a kritické aplikace vyžadující oprávnění root. Systémový soubor crontab se nachází na adrese /etc/crontab a může k nim přistupovat a upravovat je pouze uživatel root. Obvykle se používá pro konfiguraci démonů celého systému. Soubor crontab vypadá takto:
2) Soubory crontab vytvořené uživatelem
Uživatelé Linuxu mohou také vytvářet své vlastní úlohy cron pomocí příkazu crontab. Vytvořené úlohy cron poběží jako uživatel, který je vytvořil.
Všechny úlohy cron jsou uloženy v /var/spool/cron (pro distribuce RHEL a CentOS) a /var/spool/cron/crontabs (pro distribuce Debian a Ubuntu), úlohy cron jsou uvedeny pomocí uživatelského jména uživatele, který vytvořil úloha cron
démon cron běží tiše na pozadí a kontroluje /etc/crontab soubor a /var/spool/cron a /etc/cron.d*/ adresáře
crontab příkaz se používá pro úpravu souborů cron. Pojďme se podívat na anatomii souboru crontab.
Anatomie souboru crontab
Než půjdeme dále, je důležité, abychom nejprve prozkoumali, jak soubor crontab vypadá. Základní syntaxe pro soubor crontab obsahuje 5 sloupců reprezentovaných hvězdičkami následovanými příkazem, který se má provést.
* * * * * příkaz
Tento formát lze také reprezentovat následovně:
Příkaz m h d moy dow
NEBO
m h d moy dow /cesta/k/skriptu
Pojďme si to vysvětlit u každého záznamu
- m :Toto představuje minuty. Zadává se od 0 do 59
- h :Označuje hodinu zadanou od 0 do 23
- d : Představuje den v měsíci. Specifikováno mezi 1 až 31`
- moy :Toto je měsíc v roce. Udává se mezi 1 až 12
- doy : Toto je den v týdnu. Zadává se mezi 0 a 6, kde 0 =neděle
- Příkaz :Toto je příkaz, který se má provést, např. příkaz pro zálohování, restartování a kopírování
Správa úloh cron
Když jsme se podívali na architekturu souboru crontab, podívejme se, jak můžete vytvářet, upravovat a odstraňovat úlohy cron
Vytváření úloh cron
Chcete-li vytvořit nebo upravit úlohu cron jako uživatel root, spusťte příkaz
# crontab -e
Chcete-li vytvořit úlohu cron nebo naplánovat úlohu jako jiný uživatel, použijte syntaxi
# crontab -u uživatelské jméno -e
Chcete-li například spustit úlohu cron jako uživatel Pradeep, zadejte příkaz:
# crontab -u Pradeep -e
Pokud neexistuje žádný již existující soubor crontab, získáte prázdný textový dokument. Pokud soubor crontab existoval, možnost -e umožňuje soubor upravit,
Výpis souborů crontab
Chcete-li zobrazit úlohy cronu, které byly vytvořeny, jednoduše předejte volbu -l, jak je uvedeno
# crontab -l
Odstranění souboru crontab
Chcete-li odstranit soubor cron, jednoduše spusťte crontab -e a odstraňte nebo řádek cron úlohy, kterou chcete, a soubor uložte.
Chcete-li odebrat všechny úlohy cron, spusťte příkaz:
# crontab -r
To znamená, že se podívejme na různé způsoby, jak můžete naplánovat úkoly
Příklady Crontab v Plánování úloh.
Všechny úlohy cronu mají záhlaví Shebang, jak je znázorněno
#!/bin/bash
To označuje shell, který používáte, což je v tomto případě bash shell.
Dále určete interval, na který chcete naplánovat úlohy, pomocí položek úlohy cron, které jsme zadali dříve.
Chcete-li restartovat systém denně ve 12:30, použijte syntaxi:
30 12 * * * /sbin/reboot
Chcete-li naplánovat restart na 4:00, použijte syntaxi:
0 4 * * * /sbin/reboot
POZNÁMKA: Hvězdička * se používá ke spárování všech záznamů
Chcete-li skript spustit dvakrát denně, například ve 4:00 a 16:00, použijte syntaxi.
0 4,16 * * * /cesta/k/skriptu
Chcete-li naplánovat spuštění úlohy cron každý pátek v 17:00 , použijte syntaxi:
0 17 * * Pá /cesta/k/skriptu
NEBO
0 17 * * * 5 /cesta/k/skriptu
Pokud chcete spouštět úlohu cron každých 30 minut, použijte:
*/30 * * * * /cesta/k/skriptu
Chcete-li naplánovat spouštění cronu po každých 5 hodinách, spusťte
* */5 * * * /cesta/k/skriptu
Chcete-li spustit skript ve vybrané dny, například ve středu a pátek v 18:00, spusťte:
0 18 * * st,pá /cesta/k/skriptu
Chcete-li naplánovat více úloh pro použití jedné úlohy cron, oddělte úlohy středníkem, například:
* * * * * /cesta/k/skriptu1; /cesta/k/script2
Použití speciálních řetězců pro úsporu času při psaní úloh cron
Některé z úloh cron lze snadno konfigurovat pomocí speciálních řetězců, které odpovídají určitým časovým intervalům. Například,
1) @hodinové časové razítko odpovídá 0 * * * *
Provede úlohu v první minutě každé hodiny.
@hourly /path/to/script
2) @denní časové razítko je ekvivalentní 0 0 * * *
Provádí úkol v první minutě každého dne (o půlnoci). Je to užitečné při provádění každodenních úloh.
@daily /cesta/k/skriptu
3) @weekly časové razítko je ekvivalentní 0 0 1 * po
Provádí úlohu cron v první minutě každého týdne, přičemž týden, přičemž týden začíná v pondělí.
@weekly /path/to/script
3) @monthly je podobné záznamu 0 0 1 * *
Provede úkol v první minutě prvního dne v měsíci.
@monthly /path/to/script
4) @ročně odpovídá 0 0 1 1 *
Provádí úkol v první minutě každého roku a je užitečný při odesílání novoročních přání 🙂
@monthly /path/to/script
Omezení Crontab
Jako uživatel Linuxu můžete ovládat, kdo má právo používat příkaz crontab. To je možné pomocí /etc/cron.deny a /etc/cron.allow soubor. Ve výchozím nastavení existuje pouze soubor /etc/cron.deny a neobsahuje žádné položky. Chcete-li uživateli omezit používání nástroje crontab, jednoduše do souboru přidejte uživatelské jméno uživatele. Když je do tohoto souboru přidán uživatel a uživatel se pokusí spustit příkaz crontab, objeví se níže uvedená chyba.
Chcete-li uživateli umožnit pokračovat v používání nástroje crontab, jednoduše odeberte uživatelské jméno ze souboru /etc/cron.deny.
Pokud je přítomen soubor /etc/cron.allow, pak pouze uživatelé uvedení v souboru mají přístup k nástroji crontab a mohou jej používat.
Pokud žádný soubor neexistuje, bude mít oprávnění používat příkaz crontab pouze uživatel root.
Zálohování položek crontab
Vždy se doporučuje zálohovat položky crontab. K tomu použijte syntaxi
# crontab -l> /cesta/k/souboru.txt
Například,
# crontab -l > /home/james/backup.txt
Kontrola protokolů cron
Protokoly cron jsou uloženy v souboru /var/log/cron. Chcete-li zobrazit protokoly cron, spusťte příkaz:
# cat /var/log/cron
Chcete-li zobrazit živé protokoly, použijte příkaz tail, jak je znázorněno:
# tail -f /var/log/cron
Závěr
V této příručce jste se naučili, jak vytvářet úlohy cron pro automatizaci opakujících se úloh, jak zálohovat, a také jak prohlížet protokoly cron. Doufáme, že tento článek poskytl užitečné informace o úlohách cron. Neváhejte se podělit o své názory a komentáře.