Jak používat Cron v Linuxu Unix

Co je cron?


Cron je název programu, který umožňuje uživatelům Linuxu / Unixu automaticky spouštět příkazy nebo skripty (skupiny příkazů) v určitý čas nebo datum. Obvykle se používá pro příkazy administrativních úloh, jako jsou zálohy, ale lze jej použít ke spuštění čehokoli. Jak je definováno na cron manuálových stránkách; je to démon, který spouští naplánované programy.
Prakticky ve všech distribucích Linuxu používá verzi Vixie Cron osoba, která ji vyvinula, což je Paul Vixie, jeden z velkých guruů Unixu, který mimo jiné vytvořil také BIND, který je jedním z nejpopulárnějších serverů DNS. ve světě.

Spusťte cron


Cron je démon (služba), což znamená, že jej stačí spustit pouze jednou, obvykle se stejným zaváděním systému. Služba cron se nazývá crond. Ve většině distribucí je služba nainstalována automaticky a spouští se při spuštění systému, lze ji ověřit několika způsoby:
 1) etc / rc.d / init.d / crond status 2) /etc/init.d/crond status crond (pid 507) běží… 
V případě, že máte nainstalovaný příkaz service:
 stav služby crond
 crond (pid 507) běží… 
lze jej také zkontrolovat pomocí příkazu ps:
 ps -ef | grep crond
pokud z nějakého důvodu cron nefunguje, můžeme jej spustit pomocí:
 /etc/rc.d/init.d/crond start Spuštění crond: [OK]
[color = rgb (0,0,0)] Pokud služba nebyla nakonfigurována ke spuštění od začátku, stačilo by ji přidat příkazem chkconfig: [/ color]
 chkconfig -úroveň 35 crond dál 
Tímto způsobem byste jej přidali ke spuštění úrovně 3 a 5, aby se spustilo při spuštění systému.

Použití cron


Existují nejméně dva různé způsoby použití cron:
První je v adresáři / etc, kde s největší pravděpodobností najdete následující adresáře:
  • cron.hodinově
  • cron.denně
  • cron.týden
  • cron.měsíčně
Pokud je soubor skriptu umístěn v kterémkoli z těchto adresářů, bude skript spuštěn každou hodinu, každý den, každý týden nebo každý měsíc, v závislosti na adresáři.
Aby byl skript spuštěn, musí být podobný následujícímu:
 #! / bin / sh #skript, který generuje záložní cd / usr / dokumenty tar czf * záloha cp záloha / jiný_adresář /
Musíme opravit, že první řádek začíná znakem #! Tento skript lze pojmenovat například backup.sh a musíme také změnit odpovídající oprávnění, aby jej bylo možné spustit, například:
 chmod 700 backup.sh ls -l backup.sh -rwx ------ 1 root root 0 Jul 20 09:30 backup.sh
Písmeno „x“ ve skupině oprávnění vlastníka (-rwx) označuje, že jej lze provést.
Ponecháme -li tento skript v cron.hourly, bude spuštěn každou hodinu s jednou minutou každý den, později vysvětlím proč.
Druhý způsob, jak spustit nebo použít cron, je přímá manipulace se souborem / etc / crontab. Při výchozí instalaci různých distribucí Linuxu bude tento soubor vypadat nějak takto:
 cat / etc / crontab SHELL = / bin / bash PATH = / sbin: / bin: / usr / sbin: / usr / bin MAILTO = root HOME = / # run-parts 01 * * * * root run-parts / etc / cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
První čtyři řádky jsou proměnné, které označují následující:
SHELLJe to 'skořápka', pod kterou běží cron. Pokud není zadán, bude ve výchozím nastavení převzat ten, který je uveden v řádku / etc / passwd odpovídající uživateli, který provádí cron.
CESTAObsahuje nebo označuje cestu k adresářům, ve kterých bude cron hledat příkaz ke spuštění. Tato cesta se liší od globální cesty systému nebo uživatele.
MAIL TOKomu je výstup příkazu odeslán (pokud má nějaký výstup). Cron odešle e -mail komukoli, kdo je uveden v této proměnné, to znamená, že to musí být platný uživatel systému nebo jiného systému. Pokud není zadáno, pak cron odešle poštu uživateli, který vlastní právě prováděný příkaz.
DOMOVJedná se o kořenový nebo hlavní adresář příkazu cron.
The komentáře jsou označeny # na začátku řádku.
Poté následují řádky, které provádějí správně naplánované úkoly. Neexistuje žádný limit pro počet úkolů, jeden může být na řádek. Pole (Je jim 7) které tvoří tyto řádky, jsou vytvořeny následovně:
 Minuta Hodina Den Měsíc Měsíc Den Den týdne Příkaz uživatele
  • Pole: Popis
  • Minuta: Řídí minutu v hodině, ve které bude příkaz spuštěn, tato hodnota musí být mezi 0 a 59.
  • Čas: Řídí čas provedení příkazu, je zadán ve 24hodinovém formátu, hodnoty musí být mezi 0 a 23, 0 je půlnoc.
  • Den v měsíci: Den v měsíci, ve kterém chcete provést příkaz. Například by bylo uvedeno 20, aby se příkaz provedl 20. dne v měsíci.
  • Měsíc: Měsíc, ve kterém bude příkaz spuštěn, může být uveden číselně (1-12) nebo názvem měsíce v angličtině pouze první tři písmena.
  • Všední den: Den v týdnu bude příkaz spuštěn, může být číselný (0-7) nebo podle názvu dne v angličtině, pouze první tři písmena. (0 a 7 = neděle)
  • Uživatel: Uživatel, který vykonává příkaz.
  • Příkaz: Příkaz, skript nebo program, který chcete spustit. Toto pole může obsahovat více slov a mezer.
Hvězdička * jako hodnota v prvních pěti polích bude označovat začátek a konec pole, tedy všechno. Písmeno * v poli minut označuje všechny minuty.
Pro lepší pochopení prvních 5 polí a hvězdičky použiji několik příkladů:
Příklad:
 Popis 01 * * * * Běží 1 minutu každou hodinu každý den 158 * * * V 8:15 hod. každý den 15 20 * * * Ve 20:15 hod. každého dne 00 5 * * 0 V 5 hod. každou neděli * 5 * * ne každou minutu od 5:00 hod. v 5:59 hod. každou neděli 45 19 1 * * V 19:45 hod. 1. každý měsíc 01 * 20 7 * V 1 minutu každé hodiny v červenci 20 10 1 * 12 1 V 1:10 hod. Každé pondělí v prosinci 00 12 16 * Středa V poledne 16. každého měsíce, tj. Ve středu 30 9 20 7 4 V 9:30 hod. 20. července a to je čtvrtek 30 9 20 7 * V 9:30 hod. od 20. července bez ohledu na den v týdnu 20 * * * 6 do 20. minuty každé hodiny v sobotu 20 * * 1 6 do 20. minuty každé hodiny v sobotu v lednu 
Do polí je také možné zadat seznamy. Seznamy mohou být ve formě 1,2,3,4 nebo ve formě 1-4, které by byly stejné. Cron stejným způsobem podporuje nárůsty v seznamech, které jsou označeny následovně:
 Hodnota nebo seznam / přírůstek
Seznamy a přírůstky jsou opět snáze pochopitelné pomocí příkladů:
Příklad:
 Popis 59 11 * 1-3 1,2,3,4,5 V 11:59 hod. Pondělí až pátek, leden až březen 45 * 10-25 * 6-7 V 45 minutách všech hodin od 10 do 25 všech měsíců a že den je sobota nebo neděle 10,30,50 * * * 1,3,5 V 10, 30 a 50 minut všech hodin v pondělí, středu a pátek * / 15 10–14 * * * Každých patnáct minut od 10:00 ve 14:00 hod. * 12 1-10 / 2 2,8 * Všechny zápisy ve 12 hodin, ve dnech 1,3,5,7 a 9. února a srpna. (Přírůstek ve třetím poli je 2 a začíná od 1) 0 * / 5 1-10,15,20-23 * 3 Každých 5 hodin od 1. do 10. dne, 15. dne a od 20. do 23. dne každého měsíce a že den je středa 3/3 2/4 2 2 2 Každé 3 minuty počínaje minutou 3 (3,6,9 atd.) hodin 2,6,10 atd. (každé 4 hodiny počínaje hodinou 2) 2. února a to je úterý
Jak je vidět na posledním příkladu, úloha cron, která byla přiřazena k danému řádku s těmito daty, by byla provedena pouze v případě splnění 5 polí (AND). To znamená, že pro spuštění úkolu to musí být v úterý 2. února v 02:03. Vždy se jedná o logickou hodnotu A, která vrací true pouze v případě, že všech 5 polí platí v konkrétní minutu.
[color = rgb (0,0,0)] Předchozí případ pak jasně ukazuje, že: [/ color]
Program cron je vyvolán každou minutu a provádí úkoly, které jsou jeho pole splněna v přesně danou minutu.
Včetně uživatelského pole a příkazu by řádky crontab mohly být následující:
 0 22 * ​​* * root /usr /denní záloha.sh 0 23 * * 5 root /usr /týdenní záloha.sh 0 8,20 * * * jcarrillo mail -s "systém běží" [email protected]
První dva řádky spustí uživatel root a ten první spustí ve 22:00 každý den skript, který generuje denní zálohu. Druhý spouští každý pátek ve 23 hodin skript, který generuje týdenní zálohu. Třetí řádek spouští uživatel sergio a spouští se každý den v 8 ráno a 8 v noci a příkazem je odeslat e -mail na účet [email protected] s předmětem „systém pracuje“, způsob, jak si správce může být vědom toho, že vzdálený systém je v zadanou dobu aktivní, ale pokud v tuto dobu neobdrží e -mail, je něco špatně.
Být root"pak je možné, přímo upravit crontab:
 vim / etc / crontab 
Toto je přímo upraveno.

Spuštění Cronu s více uživateli, příkaz crontab


Linux je víceuživatelský systém a cron je jednou z aplikací, která podporuje práci s více uživateli současně. Každý uživatel může mít svůj vlastní soubor crontab, ve skutečnosti se předpokládá, že / etc / crontab je soubor crontab kořenového uživatele, ačkoli není problém, že jsou zahrnuti další uživatelé, a tedy šesté pole, které přesně udává, kdo je uživatel. který provádí úkol a je vyžadován v:
 / etc / crontab

Ale když normální uživatelé (a dokonce root) chcete vygenerovat vlastní soubor crontab, pak použijeme příkaz crontab.
V adresáři / var / spool / cron (může se lišit v závislosti na distribuci), je pro každého uživatele generován soubor cron, přestože je tento soubor textový, neměl by být přímo upravován.
Pak existují dvě situace, přímo generování souboru crontab pomocí příkazu:
 crontab -e
Pomocí kterého se otevře výchozí editor (obecně vi) se souborem s názvem prázdný crontab a kde uživatel zadá svou tabulku úloh a bude automaticky uložen jako / var / spool / cron / user.
Druhým případem je, že uživatel upraví normální textový soubor s položkami úkolů a jako příklad jej pojmenuje 'my_cron', pak příkaz $> crontab my_cron bude mít na starosti jeho vytvoření jako souboru cron uživatele v / var / spool / cron / uživatel:
 vi my_cron # odstraní soubory ze sdílené složky 0 20 * * * rm -f / home / sergio / shared / * # spustí skript, který provede zálohu složky dokumentů první den každého měsíce 0 22 1 * * / home / sergio / month support.sh # každých 5 hodin od pondělí do pátku, zajistí, aby byla oprávnění v mém domě správná 1 * 5 * * * 1-5 chmod -R 640 / home / sergio / *: wq ( soubor)> ls my_cron> crontab my_cron (nastaveno na / var / spool / cron / user)
Shrnutí výše uvedeného a zvážení dalších možností pro crontab:
 crontab file.cron (nastaví file.cron jako crontab uživatele) crontab -e (otevře editor předvoleb, kde lze soubor crontab vytvořit nebo upravit) crontab -l (zobrazí aktuální crontab uživatele, jeho úlohy cron) crontab -r (odebere aktuální crontab uživatele)
U některých distribucí při úpravách běžných uživatelských crontabs je nutné restartovat službu, aby bylo možné znovu přečíst soubory crontab v / var / spool / cron.
 restartování služby crond 
Abyste lépe porozuměli tomu, jak spouštět / zastavovat / restartovat služby, v tomto článku najdete další informace.

Řízení přístupu k cron


Cron vám umožňuje řídit, kteří uživatelé mohou nebo nemohou používat služby cron. Toho je dosaženo velmi jednoduchým způsobem prostřednictvím následujících souborů:
  • /etc/cron.allow
  • /etc/cron.deny
Aby uživatel nemohl používat příkaz cron nebo spíše crontab, stačí přidat jeho uživatelské jméno do souboru /etc/cron.deny, aby bylo umožněno jeho použití, pak by bylo jeho uživatelské jméno přidat do /etc/cron.allow, pokud z nějakého důvodu chcete odepřít používání cron všem uživatelům, pak můžete na začátek cron.deny napsat slovo ALL a to by stačilo.
 echo ALL >> / etc / cron.deny nebo přidání dalšího uživatele do cron.allow echo juan >> / etc / cron.allow
Pokud soubor cron.allow ani cron.deny neexistuje, teoreticky je použití cronu bez uživatelských omezení. Přidání uživatelských jmen do cron.allow bez vytvoření souboru cron.deny bude mít stejný účinek jako jeho vytvoření pomocí slova ALL. To znamená, že jakmile byl cron.allow vytvořen s jedním uživatelem, ostatní uživatelé, kteří chtějí používat cron, budou v tomto souboru vždy uvedeni.
ZávěryMluvili jsme o jeho provozu, doufám, že jste pochopili, některé distribuce jako Red Hat obsahují variantu jako anacron, která dokáže nahradit některé nedostatky cronů, přesto se používá cron na jakékoli úrovni od nejzákladnějšího po nejpokročilejší. , je vhodné porozumět jeho fungování. Pokud narazíte na nějaké otázky nebo máte nějaký návrh, neváhejte ho uvést do komentářů.Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave