Kč každú hodinu. Spustenie a zastavenie služby. Úprava záznamov aktuálneho používateľského cronu

  • 18.06.2019

MIN HOUR DOM MON DOW CMD

Tabuľka: Polia Crontab a platné rozsahy ( Linuxová syntax Crontab)

1. Plánovanie úloh na určitý čas

Základom používania cronu je vykonávať úlohy v určitý čas ako je ukázané nižšie. Toto spustí skript úplnej zálohy 10. júna o 8:30.

Upozorňujeme, že časové pole používa 24-hodinový formát, takže 8:00 je 20:00 a 20:00 je 20 hodín.

30 08 10 06 * /domov/developer/plná záloha

  • 30 – 30 minúta
  • 08 – 08:00
  • 10-10 deň
  • * - Každý deň v týždni

2. Naplánujte si úlohy, ktoré budete vykonávať častejšie (napr. dvakrát denne)

Nasledujúci skript používa ďalšie zálohovanie dvakrát denne každý deň. Tento príklad vykonáva prírastkové zálohovanie každý deň o 11:00 a 16:00. Hodnoty oddelené čiarkami v poli označujú, že príkaz by sa mal vykonať v každom zadanom čase.

00 11,16 * * * /home/developer/bin/incremental-backup

00 – 0 minúta (začiatok hodiny) 11, 16 – 11 a 16 hodín * - každý deň * - každý mesiac * - každý deň v týždni

3. Naplánujte si prácu na určitý časový interval (napríklad len cez pracovné dni)

Ak chcete, aby sa rutiny spúšťali každú hodinu v určitom časovom intervale, použite nasledujúce.

Cron rutina na každý deň počas pracovnej doby

Tento príklad kontroluje stav databázy každý deň (vrátane víkendov) počas pracovnej doby od 9:00 do 18:00.

00 09-18 * * * /home/developer/bin/check-db-status

00 - 0 minúta (začiatok hodiny) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (hodiny) * - každý deň * - každý mesiac * - každý deň týždeň

Cron rutina pre každý pracovný deň počas pracovnej doby

Tento príklad kontroluje stav databázy každý pracovný deň (okrem soboty a nedele) od 9:00 do 18:00.

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status

00 - 0. minúta (začiatok hodiny) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (hodiny) * - každý deň * - každý mesiac 1-5 - pondelok, utorok, streda, štvrtok a piatok (každý týždeň)

4. Ako zobraziť záznamy Crontab?

Zobrazte aktuálne súbory Crontab používateľa.

Ak chcete zobraziť svoje súbory crontab z vášho unixového účtu vykonajte nasledovné.

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

Zobraziť položky koreňového crontab

Prihláste sa ako užívateľ root (su - root) a spustite crontab-l, ako je uvedené nižšie.

Root@dev-db# crontab -l žiadny crontab pre root

Ak chcete zobraziť súbory iných používateľov, prihláste sa ako root a použite -u (používateľské meno) -l, ako je uvedené nižšie.

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

5. Ako upraviť položky crontab?

Úprava záznamov aktuálneho používateľského cronu.

Ak chcete upraviť položky, použite cronab -e, ako je uvedené nižšie. V predvolenom nastavení sa upraví aktuálne záznamy crontab používateľa.

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

Keď súbor uložíte, uloží sa crontab a zobrazí sa nasledujúca správa, že crontab bol úspešne upravený.

~ "crontab.XXXXyjWkHw" 2L, 83C napísaný crontab: inštalácia nového crontabu

Úprava položiek koreňového crontab

Prihláste sa ako užívateľ root(su - root) a urobte crontab -e, ako je uvedené nižšie.

Root@dev-db# crontab -e

Úprava položiek crontab iného používateľa

Editovať vstup crontabďalší Používateľ Linuxu, prihláste sa ako root a použite -u (používateľské meno) -e, ako je uvedené nižšie.

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

6. Cron vykonávanie každú minútu

V ideálnom prípade nemusíte plánovať spustenie cronu každú minútu. Ale pochopenie tohto príkladu vám pomôže pochopiť ďalšie príklady opísané v tomto článku.

Bash * * * * * CMD

* - znamená možnú jednotku - to znamená každú minútu každej hodiny počas celého roka. Priame použitie * bude tiež viac užitočná funkcia v nasledujúcich príkladoch.

Zadanie */5 v poli minút znamená každých 5 minút. Zadanie 0-10/2 v poli minút znamená každé 2 minúty počas prvých 10 minút. Túto konvenciu je teda možné použiť vo všetkých 4 oblastiach.

7. Spúšťajte úlohy Cron na pozadí každých 10 minút

Ak chcete kontrolovať miesto na disku každých 10 minút, použite nasledujúce.

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

Táto úloha spúšťa zadaný príkaz kontroly disku každých 10 minút po dobu jedného roka. Možno však budete musieť vykonať kontrolu iba počas pracovnej doby alebo naopak. Vyššie uvedené príklady ukazujú, ako to urobiť.

Namiesto zadávania hodnôt v 5 poliach ich môžeme zadať pomocou kľúčové slovo ako je ukázané nižšie.

Existovať špeciálne podmienky, keď namiesto 5 polí môžete použiť @ a potom kľúčové slovo - napríklad reštart, polnoc, ročne, každú hodinu.

Špeciálne kľúčové slová Cron a ich význam

8. Naplánujte si prácu na prvú minútu každého roka pomocou @yearly

Ak chcete, aby sa úloha cron spúšťala v prvých minútach každého roka, môžete použiť kľúčové slovo @yearly, ako je uvedené nižšie. V tomto prípade bude systém fungovať ročne Údržba pomocou skriptu ročnej údržby o 00:00 1. januára každého roka.

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

9. Každý mesiac spúšťajte úlohy pomocou kľúčového slova @monthly

Je to podobné ako @yearly vyššie. Príkaz sa však vykonáva mesačne. Príkaz vykoná zálohu o 00:00 prvého každého mesiaca.

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

10. Každý deň spúšťajte úlohy pomocou @daily

Pomocou kľúčového slova @daily sa vytvorí denný súbor denníka, ktorý každý deň o 00:00 vymaže denník.

@daily /home/developer/arch-linux/bin/cleanup-logs "deň začal"

11. Ako vykonať príkaz Linux po každom reštarte pomocou @reboot?

Použitie kľúčového slova @reboot vykoná zadaný príkaz pri každom spustení systému.

@rebootCMD

13. 12. Ako zakázať/presmerovať odchádzajúcu poštu Crontab pomocou kľúčového slova MAIL?

V predvolenom nastavení crontab odosiela výstup úloh používateľovi, ktorý si úlohu nainštaloval. Ak ich chcete presmerovať na iného používateľa, pridajte alebo aktualizujte premennú MAIL v crontab, ako je uvedené nižšie.

Developer@dev-db$ crontab -l MAIL="developer" @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space

Ak chcete zabrániť odosielaniu pošty vôbec, t. j. zastaviť odosielanie výstupných súborov crontab, pridajte alebo aktualizujte premennú MAIL v crontab, ako je uvedené nižšie.

13. Ako spúšťať úlohy Linux Cron každú sekundu pomocou Crontab

Cron nemôžete nastaviť tak, aby sa spúšťal každú sekundu. Pretože minimálna jednotka vykonanie cronu – minúta. V normálnom scenári nie je potrebné spúšťať spustenie cronu každú sekundu.

14. Zadanie premennej PATH v Crontab

Vo všetkých vyššie uvedených príkladoch sme uviedli absolútna cesta Linuxové príkazy alebo shell skript, ktorý sa má vykonať.

Napríklad namiesto zadania /home/developer/tape-backup , ak chcete zadať iba tape-backup , pridajte /home/developer do premennej PATH v crontab, ako je uvedené nižšie.

Developer@dev-db$ crontab -l PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/developer @yearly Annual-maintenance */10 * * * * check-disk-space

15. Inštalácia Crontabu zo súboru Cron

Namiesto priama úprava crontab môžete pridať všetky položky do súboru cron. Ak súbor obsahuje tieto položky, môžete ich vypísať alebo nainštalovať do cronu, ako je uvedené nižšie.

Poznámka: Týmto sa vo vašom crontab vytvorí súbor cron-file.txt, ktorý odstráni predchádzajúce položky cron. Preto buďte opatrní pri načítavaní záznamov cron z cron-file.txt:

developer@dev-db$ crontab -l žiadny crontab pre vývojára $ cat cron-file.txt @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space developer@dev -db$ crontab cron-file.txt developer@dev-db$ crontab -l @ročne /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space

Nedávno som musel nastaviť naplánovanú úlohu na serveri a prvýkrát to bolo ťažké a dokonca strašidelné. Preto som sa rozhodol napísať článok o etapách Nastavenia Cron. Vytvoríme jednoduchý PHP skript na odoslanie Email raz za deň.

Požadovaná základná úroveň

  • Základné skúsenosti s príkazovým riadkom;
  • Zručnosti v práci s SSH na serveri Linux.

Úlohy

  • Naučte sa, ako nastaviť jednoduchú naplánovanú úlohu (cron job) v prostredí servera Linux;
  • Nastavte úlohu cron na odosielanie e-mailov denne v určenom čase.

Odosielanie e-mailov pomocou PHP

Najprv musíte vytvoriť jednoduchý PHP skript na otestovanie nastavenia Cron Linuxu. Vytvorím súbor, ktorý odošle e-mail:

Ak nie ste oboznámení s poštová funkcia PHP() odhlásiť sa oficiálna dokumentácia . Nastavujem premenné, ktoré špecifikujú príjemcu, emailová adresa odosielateľa, predmet, obsah správy a hlavičky. Nie je to najmodernejšie resp bezpečným spôsobom odoslanie emailu. Ale funguje, tak to idem použiť na testovanie. Kód uložíme do súboru cron.php.

Cesta k verejnému priečinku bude závisieť od distribúcie Linuxu, ale súbor cron.php som umiestnil do /var/www/html/crontest. Takže úplná cesta k môjmu skriptu bude nasledovná: /var/www/html/crontest/cron.php. Tento skript môžete otestovať priamo v prehliadači. Ak je vaša stránka example.com, adresa súboru bude s najväčšou pravdepodobnosťou example.com/crontest/cron.php. Ak spustíte súbor a získate e-mailom, čo znamená, že skript funguje.

Localhost nie je nakonfigurovaný na odosielanie pošty PHP, takže tento skript musí byť spustený z prostredia Linuxu.

Základná syntax Cron

Existuje užitočná stránka s názvom Crontab Generator, ktorá dokáže nastaviť PHP Cron, ale najprv sa rýchlo pozrieme na základnú syntax.

Príklad spustenia Cron:

* * * * * /usr/bin/php /var/www/html/crontest/cron.php > /dev/null 2>&1

Časti príkazu cron

Príkaz cron pozostáva zo štyroch hlavných častí:

dodacia lehota Spustenie PHP Cesta k výsledku skriptu * * * * * /usr/bin/php /var/www/html/crontest/cron.php > /dev/null 2>&1

dodacia lehota— nastavuje minúty, hodiny, dni, mesiace a deň v týždni.

Spustenie – Úloha cron by mala volať PHP, ktoré sa nachádza v priečinku /usr/bin/php.

Cesta k skriptu – úplná cesta k súboru, ktorý je potrebné spustiť.

Výsledok (voliteľné) - výsledok môžete zapísať do súboru alebo túto časť zahodiť > /dev/null 2>&1 .

Vo vyššie uvedenom príklade je úloha Linux Cron nakonfigurovaná na odosielanie e-mailu každú minútu v hodinu každý deň. Hviezdička je zástupný znak predstavujúci „všetko“.

  • Minúty - nastavte minúty od 0 do 59;
  • Hodiny - nastavenie hodín od 0 do 24;
  • Dni - nastavte deň od 1 do 31;
  • Mesiace - nastavte mesiac od 1 do 12 (január-december);
  • Týždeň - nastavte deň v týždni od 0 do 6 ( Nedeľa, sobota).

Tu je niekoľko jednoduchých príkladov:

Syntax Vysvetlenie 0 * * * * sa spúšťa raz za hodinu (každú nula minútu každej hodiny). 0 0 * * * prebieha raz za deň (o polnoci každý deň o minúte nula). 0 0 1 * * prebieha raz za mesiac (v prvý deň každého mesiaca o polnoci o minúte nula). 0 0 1 1 * prebieha raz ročne (v prvý deň prvého mesiaca o polnoci o nulovej minúte).

Existujú aj ďalšie nastavenia, napríklad pre nepárne/párne dni, každých 5 minút atď. K dispozícii je tiež veľa zdrojov, v ktorých môžete nájsť konkrétne nastavenia.

Nastavenie úlohy Cron

Ak je cron nakonfigurovaný pod účtom koreňový záznam, potom musíte pred spustením kódu spustiť sudo.

Príkaz cron sa nazýva crontab. Našou úlohou je posielať e-maily raz denne, takže kompletný tím bude takto:

0 0 * * * /usr/bin/php /var/www/html/crontest/cron.php >/dev/null 2>&1

Po prihlásení SSH server, môžete skontrolovať, či existujú ďalšie prebiehajúce úlohy. To možno vykonať pomocou nasledujúceho príkazu.

crontab -l crontab: žiadny crontab pre používateľa

Teraz upravíme crontab:

V tomto bode budete s najväčšou pravdepodobnosťou pracovať v editore vi, ak ste nikdy nezmenili predvolený editor vášho servera. Keď prvýkrát nastavíte Cron, môže to byť trochu mätúce.

Tu je postup:

  1. Stlačte esc;
  2. Stlačením i spustíte úpravu súboru;
  3. Vložte príkaz cron do súboru;
  4. Opätovným stlačením esc ukončíte režim úprav;
  5. Napíšte :wq, aby ste uložili zmeny do súboru ( w - písať) a odchod ( q - skončiť).

Teraz je crontab uložený a e-mail by sa mal odosielať raz denne o polnoci. Môžete nastaviť * / 5 * * * * - každých 5 minút, aby ste skontrolovali jeho fungovanie.

Do súboru môžete pridať aj viacero úloh cronu. Ak to chcete urobiť, umiestnite každý príkaz na samostatný riadok.

Preklad článku " Nastavenie základnej úlohy Cron v systéme Linux» priateľský projektový tím

31. marca 2014 o 11:26 hod

Vytváranie „života“. Linux je jednoduchší alebo automatizácia spúšťania procesov s pomocou cron

  • nastavenie Linuxu,
  • *nix
Úvod
Sedieť večer pri notebooku a hrabať sa v štúdiu na virtuálnom stroji Linuxová distribúcia, pýtal som sa sám seba: Je možné zjednodušiť rutinné spúšťanie procesov? Ak máte záujem, pozrite si kat. Článok má len informatívny charakter a je určený predovšetkým pre tých, ktorí sú s OS novým. Linuxová rodina, ale skúsení používatelia Linuxu sa môžu tiež naučiť niečo nové pre seba.
atď a cron démoni
Po nejakom googlení a čítaní som sa dozvedel o dvoch démonoch: atď A cron. Prvý som odmietol pre jeho obmedzenia a nepohodlnosť práce s ním. Ale o druhom by som chcel hovoriť podrobnejšie.
Ak váš počítač náhle, zdanlivo bez dôvodu, začne prehľadávať disk, posielať vám poštu atď., S najväčšou pravdepodobnosťou ide o prácu démona cron

Michael Kofler" Linux. Inštalácia, konfigurácia, administrácia." - Petrohrad: Peter, 2014

Čo teda presne robí tento? cron. Démon sa aktivuje v jednominútových intervaloch a kontroluje súbory crontab a spúšťa programy v nich uvedené. Spočiatku sa používa počas údržby systému, ale používateľ ho môže použiť na riešenie vlastných problémov.

Ak máte nainštalovanú bežnú distribúciu, nemáte sa čoho obávať, cron sa nainštaluje automaticky. Ak je to minimálne, nenechajte sa rozčuľovať - ​​prejdite na terminál.
yum install vixie-cron //(RHEL - červený klobúk Enterprise Linux)
alebo
apt-get install cron //(distribúcie podobné Deabianu)
Používateľský prístup k démonovi je nakonfigurovaný v adresári /var/spool/cron/tabs/user. Ich práva sú nastavené v súboroch /cron/allow A /zaprieť. Pridáva sa používateľ do /povoliť umožníme mu vykonať príkaz cron a ak pridáte používateľa do /zaprieť, potom naopak, používateľ bude mať zakázané používať démona.

Ja sám cron nakonfigurované v adresári /etc/crontab. Súbor /crontab alebo súbory v /etc/cron. d obsahuje zoznam príkazov, ktoré sa majú vykonať. Syntax je:
v /etc/crontab [minúta][hodina][deň][mesiac][týždeň][používateľ][príkaz]
Napríklad, ak potrebujem ping na ya.ru každých 15 minút v mene superužívateľa, potom musím pridať nasledovné:
*/15 **** root ping ya.ru
Ak niektoré z prvých piatich polí obsahuje znak *, toto pole sa ignoruje. Predchádzajúci príkaz nešpecifikuje ani mesiac, ani týždeň, preto sa vykoná každých 15 minút. Na zmenu konfigurácie použite príkaz v termináli vi alebo manuálne zmeniť obsah súboru /etc/crontab.

Práca s .hodinovým, .denným, .týždenným, .mesačným
V predvolenom nastavení takmer vo všetkých distribúciách je súbor /etc/crontab obsahuje len niekoľko položiek potrebných na spustenie skriptov:
/etc/cron.hourly/*- skripty spustené každú hodinu
/etc/cron.daily/*- skripty vykonávané každý deň
/etc/cron.weekly/*- skripty vykonávané každý týždeň
/etc/cron.monthly/*- skripty vykonávané každý mesiac

Ak chcete, aby démon vykonával vaše príkazy, pridajte skript, ktorý príkazy vykonáva, do jedného z adresárov. Nezabudnite nastaviť bit spustiť (súbor chmod a+x). Ak to neurobíte, váš skript jednoducho nebude mať prístup a nebude vykonaný!
Ak chcete skontrolovať, či sa váš skript spustí, spustite príkaz
run-parts --test /etc/cron.daily
Ak sa skript nachádza v inom adresári, zmeňte ho podľa toho denne na mesačne atď.
A pamätajte, že názov skriptu nemôže obsahovať bodky, žiadne iné symboly ako bodky. Príkaz run-parts jednoducho ignoruje bodkové skripty, neviem prečo.

Anacron
Okrem démona cron. Väčšina distribúcií sa dodáva s nainštalovaným plánovačom úloh Anacron. Jeho úlohou je spúšťať skripty raz (na požiadanie) /etc/cron.n kde n môže nadobúdať tri hodnoty: denne, týždenne, mesačne. Po ich dokončení sa vypne a nevisí v systéme ako cron. Anacron tiež nespúšťa skripty z adresára /etc/cron.hourly, toto je výsada cron. Globálna konfigurácia Anacronu sa vykonáva v adresári /etc/anacrontab, ale zvyčajne stačia predvolené nastavenia.
P.S.
Aby sa s ním ľahšie pracovalo každodenné úlohy správca systému pracujúci cez ssh, je vhodnejšie použiť cron a zakázať Anacron, pretože vykonáva úlohy jednu po druhej a cron ignoruje úlohy, ktoré Anacron vykonáva. Vďaka tomu budú všetky vaše úlohy dokončené iba raz. Vo väčšine distribúcií je práca s démonom takmer rovnaká, ale ak máte problémy, použite wiki pre váš Linux.

Niektoré úlohy vyžadujú použitie plánovačšpeciálny program, ktorý spúšťa určité skripty, programy atď určitý momentčas. Vo väčšine prípadov toto Cron. Možno sú aj iní, ale ja o nich nič neviem. V tomto článku budem hovoriť o niektorých funkciách nastavenia Cronu na príklade spustenia PHP skriptu.

Cron úlohy a spustenie PHP skriptu

Samotný záznam (úloha) v Crone (zvyčajne podľa názvu priečinka crontab alebo crontabs) zahŕňa časová značka A tímov. Časová značkaúloha obsahuje nasledujúce hodnoty: deň v týždni, mesiac, deň, hodina a minúta a tím (často nazývané: cvičenie) , aspoň v prípade spustenia skriptu, môže pozostávať z tlmočníka a samotného skriptu, napr.

`/usr/bin/ which php` /home/l/login/public_html/script.php

IN v tomto prípade: `/usr/bin/ which php` je absolútna cesta k interpreteru PHP a /home/l/login/public_html/script.php je absolútna cesta k skriptu PHP. Je pozoruhodné, že cesta k tlmočníkovi a skriptom sa môže pre vás líšiť, pretože závisia od nastavení webového servera.

Nastavenie Cron cez PU

Väčšina poskytovateľov hostingu poskytuje klientom špeciálne ovládací panel(PU) hosting, ktorý uľahčuje konfiguráciu a prácu s položkami Cron. Takto vyzerá spustenie php skriptu cron_admitad.php v plánovači na SpaceWebe.

Upozorňujeme, že cesta k tlmočníkovi tu nie je špecifikovaná (viac o tom trochu neskôr). Pozoruhodné je aj použitie symbolu „ vlnovka" (~) ako alias" domovský adresár» (berúc do úvahy uvedený príklad: /home/l/login). Zjednodušene povedané, toto je adresár, do ktorého, kedy normálnych podmienkach, pôvodne pristupujete cez FTP.

Cesta k tlmočníkovi v skripte php

Väčšina problémov má viacero riešení. Často je ťažké povedať, ktorý z nich je optimálny, ale o to nejde.

symbol " mriežka" (#) je komentár v PHP, ale sekvencia #! (Angličtina) línia tresku, hash-bang alebo ona-bang) má špeciálny význam – určuje cestu k interpreteru skriptu.

Faktom je, že v operačných systémoch podobných UNIX je možné vytvárať skripty rôzne jazyky: PHP, Perl, Python atď. Keď skript spúšťa webový server, je založený na prípone súboru (napríklad: .php, .phtm, phtml atď. sú bežné rozšírenia pre interpret PHP). ako UNIX OS Spravidla sa nezameriavajú na príponu súboru - súbor ju často jednoducho nemá. Systém prečíta prvý riadok a hľadá obsluhu skriptu.

Vo vyššie uvedenom PHP skripte je prvý riadok, ktorý mám:

#!/usr/local/bin/php

Opäť platí, že cesta k vášmu interpreteru PHP sa môže líšiť od špecifikovaná cesta v tomto príklade, pretože všetko závisí od nastavení webového servera.

Cesty k súborom v skripte bežia cez Cron

Ďalšia dôležitá nuansa. Ak skript používa vyžadujú funkcie(), include(), fopen() atď., ktoré zahŕňajú prístup k súborom tretích strán na webovom serveri, musíte zadať absolútnu cestu, napríklad:

/home/s/shop4mru/public_html/content/data/coupons.db

Opäť platí, že cesta k súboru coupons.db sa môže líšiť od cesty uvedenej v príklade, pretože všetko závisí od nastavení webového servera.

Vo všeobecnosti môžete použiť aj relatívnu cestu. Na to použite PHP funkciu chdir(), ktorá zmení aktuálny PHP adresár na ten, ktorý je zadaný ako jeho parameter.

Úprimne povedané, túto funkciu som nepoužil, ale ako som pochopil, je to tak nasledujúcim spôsobom. Pred kontaktovaním súbor tretej strany na webovom serveri vložte niečo ako nasledujúci kód:

Chdir("public_html"); // prechod do adresára: /home/s/shop4mru/public_html

Súbor teda, berúc do úvahy daný príklad, bude dostupný cez relatívna cesta:

./content/data/coupons.db

Bodka na začiatku znamená aktuálny, upravený adresár.

Poďme si zhrnúť nastavenie Cron

Cron (často nazývané podľa názvu priečinka crontab alebo crontabs) - plánovací program spustený na webovom serveri poskytovateľa hostingu, ktorý spúšťa skripty, programy a iné príkazy v určitom čase. Samotná úloha je záznam pozostávajúci z časovej pečiatky a príkazu. Dôležitý bod tu je náznak tie správne cesty na interpret skriptov a súbory v ňom obsiahnuté.

o 8:00 Upraviť správu 9 komentárov

Veľa som počul o tom, ako má Linux praktický plánovač úloh cron. Nepotreboval som ho však používať a nechcel som rozumieť jeho nastaveniam... konzole, veľa anglických písmen... bolo to strašidelné. Ale, našťastie, moje obavy boli márne - všetko je jednoduché až do základov. Článok sa pozrie na to, ako nastaviť vykonávanie vašich skriptov podľa plánu a ako príklad nainštalujeme „kukučku“.

Najprv trochu o tom, ako to vo všeobecnosti funguje.

Keď sa systém spustí, spustí sa démon cron. Dá sa ovládať (stop/štart/kontrola stavu) príkazom: sudo service cron (stop/štart/stav). Ale to je zriedka potrebné.

Samotný cron démon najviac chvíľu spí a raz za minútu mierne pootvorí oko, aby v tomto čase skontroloval úlohy. Ak nie sú žiadne úlohy, znova prejde do hibernácie.

Úlohy sú umiestnené v súboroch s názvami rovnými užívateľským menám a samotné súbory sú umiestnené v priečinku /var/spool/cron/crontabs. Priečinok je chránený pred vonkajšími zásahmi a je prístupný iba superužívateľovi. Každý používateľ si však môže nastaviť plán svojich úloh bez toho, aby poznal heslo root (superužívateľa).

Komu nastaviť cron Pre bežný používateľ len napíš:

Ak potrebujete vytvoriť úlohu pre iného používateľa, spustite ju príkazom:

sudo crontab -u user -e

Namiesto user píšeme požadovaného užívateľa, napríklad root.
Pri prvom spustení sa objaví otázka o editore... Mám rád nano. Je to jednoduché a beží bez GUI.


Syntax úloh je veľmi jednoduchá. Pozrime sa na príklad zo snímky obrazovky spustenia kukučky:

0 */1 * * * /home/zegi/bin/kuku

V úlohe sú 2 hlavné polia: 0 */1 * * * - označuje čas, kedy bude príkaz spustený. A /home/zegi/bin/kuku je cesta k skriptu, ktorý popisuje príkaz(y).

S adresou skriptu by nemali byť žiadne problémy (zegi je používateľské meno... nezabudnite uviesť svoje). Musíme si však vysvetliť, ako nastaviť čas cronu na spustenie skriptu.

Celkovo máme 5 vstupných buniek, ktoré sú oddelené medzerou.
1 - minúty (čísla od 0 do 59)
2 hodiny (od 0 do 23)
3 - deň v mesiaci (od 1 do 31)
4 - mesiac v roku (od 1 do 12... napríklad február je 2)
5 - deň v týždni (od 1 do 7. Používa sa západný týždeň, kedy je začiatok nedeľa. t.j. Ne-1, Po-2, Ut-3, St-4, Št-5, Pia-6, So - 7).

Každá bunka musí byť vyplnená. Ak potrebujete, aby sa príkaz vykonával každý mesiac, nastavte * v 4. poli. To isté platí pre ostatné polia.

Vráťme sa k príkladu kukučky, keď skript beží každú hodinu. Používa sa na nastavenie frekvencie / . Ak napríklad potrebujete, aby sa úloha vykonávala každých 5 minút v pondelok, nastavte:

Ak potrebujete, aby sa úloha vykonávala každú hodinu, budete musieť nastaviť konkrétnu minútu. Ak necháte hviezdičku (* */1 * * *), koruna sa vykoná každú minútu - pretože sú splnené podmienky: skontrolovala všetkých 5 buniek a ich hodnota zodpovedá aktuálnemu času (v minútach - nezáleží na tom .
Pred lomkou musí byť vždy hviezdička. Napríklad priradenie vykonania každú minútu od 30. dňa zadaním 30/1 nebude fungovať.

Ak je potrebné, aby sa úloha vykonávala nie cyklicky, ale niekoľkokrát, hodnoty sa zapíšu oddelené čiarkami.
Úlohu musíte splniť napríklad v pracovné dni o 12.00 a 18.00 hod. Potom to bude vyzerať takto:

* 12,18 * * 2,3,4,5,6

Po dokončení úprav úloh nezabudnite zmeny uložiť (Ctrl+O > enter) a potom môžete skončiť (Ctrl+x).

Cron by mal upozorniť, že sa objavil Nová úloha a je pripravený ho spustiť a napíše: „crontab: inštalácia nového crontabu“.

Vytvorené úlohy (možno ste neurobili nič pre seba, ale niečo za vás nakonfiguroval správca siete) si môžete pozrieť príkazom:

A nakoniec aj seba kukučkový scenár, ktorý kuká každú hodinu:

#!/bin/bash
h=`dátum +%l`
zatiaľ čo [ $h -gt 0]
robiť
hrať ~/kukushka.wav
h=$[$h-1]
hotový

Zvuk kukučky si môžete stiahnuť príkazom:

wget http://dl.dropbox.com/u/24844052/tuksik/kukushka.wav

Hra je súčasťou balenia sox. V ubuntu ho môžete nainštalovať pomocou príkazu.