cron každý mesiac. Uľahčenie „života“ v Linuxe alebo automatizácia spúšťania procesov pomocou cronu. Spustenie a zastavenie služby

  • 06.05.2019

Veľa som počul o tom, že linux má praktický plánovač úloh cron. Nepotreboval som ho však používať a nechcel som rozumieť jeho nastaveniam ... konzola, veľa anglických písmen ... bolo to strašidelné. Ale, našťastie, moje obavy boli márne - všetko je jednoduché. Č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 otvorí oči, aby skontroloval úlohy na tento čas. Ak nie sú žiadne úlohy, znova prejde do hibernácie.

Úlohy sú v súboroch, ktorých mená sa zhodujú s používateľskými menami a samotné súbory sú v priečinku /var/spool/cron/crontabs. Priečinok je chránený pred vonkajšími zásahmi a je dostupný 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).

Čo by nastaviť cron Pre bežného používateľa stačí zadať:

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

sudo crontab -u user -e

Namiesto užívateľa píšeme požadovaného užívateľa, napríklad root.
Pri prvom spustení sa vás opýtajú na editor... Mám rád nano. Je to jednoduché a beží bez GUI.


Syntax úloh je veľmi jednoduchá. Zvážte príklad zo snímky spustenia kukučky:

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

Celkovo sú v úlohe 2 hlavné polia: 0 */1 * * * - označuje čas, kedy bude príkaz fungovať. 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ím však vysvetliť, ako nastaviť čas cronu na vykonanie skriptu.

Celkovo máme na vstup 5 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. sa používa západný týždeň, keď 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 chcete, 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, kde skript beží každú hodinu. Na nastavenie frekvencie sa používa / . Ak napríklad chcete, aby sa úloha spúšťala každých 5 minút v pondelok, nastavte:

Ak chcete, aby sa úloha spúšťala každú hodinu, budete musieť nastaviť určitú minútu. Ak necháte hviezdičku (* */1 * * *), cron sa vykoná každú minútu - pretože sú splnené podmienky: skontroloval všetkých 5 buniek a ich hodnota zodpovedá aktuálnemu času (minúty - aj tak. Hodiny - každú hodinu , nie len isté).
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 nevykonávala cyklicky, ale niekoľkokrát, hodnoty sa zapíšu oddelené čiarkami.
Úlohu musíte splniť napríklad v pracovné dni o 12. a 18. hodine. Potom to bude vyzerať takto:

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

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

Cron by mal upozorniť, že sa objavila nová úloha a je pripravený ju vykonať, a to napísaním: "crontab: install new crontab".

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 sa dá nainštalovať pomocou príkazu.

, | |

Cron je dnes jedným z najbežnejších spôsobov automatizácie spúšťania procesov v systéme Linux. Cron je démon, ktorý beží ďalej pozadie a umožňuje vám naplánovať a automatizovať spustenie rôznych úloh (vrátane úloh súvisiacich s podporou servera). Na tento účel sa používa konfiguračný súbor crontab.

Inštalácia Cron

Na tento moment takmer všetky distribúcie sa dodávajú s už štandardne nainštalovaným démonom cron. Ak cron nie je predvolene nainštalovaný, možno ho rýchlo nainštalovať pomocou nasledujúcich príkazov:

Ubuntu/Debian:

aktualizácia sudo apt-get
sudo apt-get nainštalovať cron

CentOS/Red Hat Linux:

aktualizácia sudo yum
sudo yum nainštalujte vixie-cron crontabs

Po dokončení inštalácie sa uistite, že cron beží na pozadí:

sudo /sbin/chkconfig crond on
sudo /sbin/service crond start

Základná syntax

Zvážte nasledujúci príklad úlohy, ktorej spustenie chcete naplánovať:

5 * * * * curl http://www.google.com

Syntax plánovania rôzne úlohy sa môže na prvý pohľad zdať mätúce. V skutočnosti je to veľmi krátke a jednoduché, len treba prísť na to, ako to čítať. Každý riadok je rozdelený na plán a príkaz. Do riadku je možné zadať takmer akýkoľvek príkaz. Harmonogram je rozdelený do 5 rôznych oblastí plánovania v nasledujúcom poradí:

<Минуты> <Часы> <Дни_месяца> <Месяцы> <Дни_недели>

príklady cronu

Táto časť obsahuje príklady plánovania najbežnejších úloh.

Ak chcete, aby sa príkaz spúšťal automaticky každú minútu:

Spustenie príkazu každú dvanástu minútu v hodinu (08.12, 09.12 atď.):

Ak chcete, aby sa príkaz spúšťal každých 15 minút:

0,15,30,45 * * * *

Automatické vykonanie príkazu každý deň o 4:00:

Spustenie príkazu každý utorok o 4:00:

Rozvrh je možné rozdeliť. To znamená, že namiesto 0,15,30,45 môžete použiť:

Venujte pozornosť rozsahu 2-6. Daná syntax spustí zadaný príkaz od 2:00 do 6:00 každých 15 minút.

Ako vidíte, mimoriadne výkonná a flexibilná syntax cron vám umožňuje určiť takmer akýkoľvek časový interval.

Nastavenie cronu

Po vytvorení plánu úloh ho musíte umiestniť na správne miesto v systéme, aby ho démon mohol nájsť a prečítať. Vo všeobecnosti existuje niekoľko takýchto bodov v systéme, ale spravidla je takýto plán umiestnený v crontab používateľa. Ako už bolo spomenuté, crontab je konfiguračný súbor démona cron, ktorý obsahuje plán spúšťania určitých príkazov a programov. Tento súbor sa nachádza v /var/spool/cron/crontab, ale nie je zvykom ho priamo upravovať. Vložiť do súboru požadované programy Rovnomenný príkaz je crontab. To znamená, že ak chcete upraviť súbor crontab, môžete jednoducho zadať:

Tento príkaz otvorí textový editor, pomocou ktorého môžete vykonať všetky potrebné zmeny; každý Nová úloha treba zadať na nový riadok.

Ak chcete zobraziť crontab bez vykonania akýchkoľvek zmien, použite príkaz:

Crontab môžete vymazať pomocou nasledujúceho príkazu:

Pokročilý používateľ môže upravovať crontab iných používateľov pomocou:

crontab -u<пользователь>-e

cron výstup

Po dokončení úlohy cron odošle výstup do emailová adresa užívateľa (pokiaľ výstup nemusí smerovať do logu alebo /dev/null). E-mailovú adresu je možné zadať manuálne zadaním parametra MAILTO vyššia časť crontab. Môžete tiež zadať shell, ktorý sa má spustiť, cestu k binárnemu súboru cron súbor a domovský adresár. Pre to:

prvý otvorený crontab:

potom ho upravte nasledujúcim spôsobom:

SHELL=/bin/bash
DOMOV=/
MAILTO=" [e-mail chránený] _user.com”
#Toto je komentár
* * * * * echo „Spustiť tento príkaz každú minútu“

Tento riadok sa vráti Spustite tento príkaz každú minútu. Démon cron odošle tento výstup na e-mail [e-mail chránený] _user.com. To, samozrejme, nie je príliš pohodlné. Ako už bolo uvedené, tento záver môžu byť nasmerované do súboru denníka, aby sa predišlo takýmto situáciám.

Ak to chcete urobiť, stačí pridať:

* * * * * echo ‘Spustiť tento príkaz každú minútu’ >> file.log

Poznámka: symboly >> nasmerujú výstup do protokolu. Okrem logovania môžete použiť aj /dev/null s nasledujúcim PHP skriptom spusteným na pozadí.

* * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1

Obmedzenie prístupu ku cronu

Ak chcete obmedziť prístup k démonovi cron, musíte použiť súbory /etc/cron.allow a /etc/cron.deny. ak chcete povoliť (povoliť) alebo zakázať (zakázať) prístup konkrétnemu používateľovi, stačí zadať meno používateľa do príslušného súboru. V predvolenom nastavení je démon cron dostupný pre všetkých používateľov. Ak chcete zakázať prístup všetkým používateľom a udeliť prístup iba príkladu používateľa, musíte použiť nasledujúcu postupnosť príkazov.

Originál: Používanie plánovača cron na systémoch Linux
Autor: Rares Aioanei
Dátum zverejnenia: 29. september 2011
Preklad: A. Krivoshey
Dátum prevodu: november 2011

1. Úvod

Ak už máte nejaké skúsenosti so systémom Administrácia Linuxu, potom by ste mali vedieť, čo je cron a na čo slúži. Ak práve začínate pracovať s Linuxom, potom sa vám tieto znalosti budú hodiť. Aj keď ste sa už naučili používať cron, tento článok vám pomôže obnoviť vaše znalosti.
Názov cron pochádza zo starogréckeho zosobnenia času Cronos. A toto je dobre zvolený názov, pretože hlavným účelom cronu je pomôcť naplánovať rôzne úlohy, ktoré musí systém vykonať daný čas. Ak ste používali systém Windows, pravdepodobne ste museli siahnuť po pomôcke Naplánované úlohy. Vo všeobecnosti je účel programov podobný, ale implementácia je odlišná. Cron je na seriózne úlohy správa systému a má väčšiu flexibilitu. Príkladom skutočného problému je zálohovanie. Chceli by ste manuálne zálohovať dáta na niekoľkých stovkách počítačov? Myslím, že nie. Stačí napísať jednoduchý skript pomocou rsync, naplánujte si jeho vykonanie, napríklad denne, a zabudnite naň. Všetko, čo je v budúcnosti potrebné, je z času na čas skontrolovať protokoly. Niektorí dokonca používajú cron, aby im pripomenul dôležité osobné udalosti, ako sú narodeniny. Ale cron je len démon, ktorý spúšťa úlohy, ktoré určíte. Existuje nástroj, ktorý vám pomôže upraviť/pridať/odstrániť tieto úlohy? Samozrejme existuje a nazýva sa to crontab (z tabuľky cron). Postupne sa však posunieme dopredu a začneme s inštaláciou.

2. Nainštalujte cron

Väčšina distribúcií používa Vixie Cron a niektoré ďalšie deriváty ako predvolenú implementáciu cronu a to sú tie, ktorým sa budeme venovať v tomto článku. Navyše, cron je už predinštalovaný takmer vo všetkých distribúciách, keďže je veľmi dôležitá časť Linuxové systémy. Hoci bežný používateľ, spravidla s ním nikdy nepracuje priamo, systém a mnohé aplikácie používajú cron ( dobrý príklad je pravidelne aktualizovať databázu manuálových stránok). Pozoruhodnou výnimkou je Gentoo, kde musíte manuálne nainštalovať vixie-cron a pridať ho do predvolenej úrovne spustenia. Na Arch, Debian, Slackware, Ubuntu, Fedora a OpenSUSE je cron štandardne nainštalovaný a spúšťa sa automaticky pri štarte systému. Dúfame, že si preštudujete manuálové stránky pre cron a crontab, pretože mnohé distribúcie používajú ich opravené verzie, čo sa robí pre lepšiu integráciu programu do konkrétnej distribúcie. Preto existuje možnosť, že funkcia, ktorá je dostupná napríklad v Gentoo, nebude dostupná v Slackware. V každom prípade nie je nič lepšie čítanie manuálové stránky, najmä ak máte čo do činenia s nový program, ktorý sa chystáte používať pomerne často.

3. Pomocou cronu

Najprv sa musíme uistiť, že cron beží:

$ ps faux | grep cron

Ak vo výstupe nič nie je, skontrolujte, či je spustený cron a pridajte ho k predvoleným službám, aby sa spustil pri ďalšom spustení. Ako to urobiť, závisí od distribúcie. AT Systémy Debian Príkaz by mal vypísať niečo takéto:

Koreň 1424 0,0 0,0 22 000 884 ? Ss 13:56 0:00 /usr/sbin/cron

Teraz necháme cron fungovať. Najprv si musíme premyslieť, aký príkaz použijeme. Vyžaduje to oprávnenia root? Povedzme, že používame crontab na pridanie jednoduchého skriptu, ktorý sa spustí každých päť minút ako jednoduchý používateľ.

3.1. Crontab

3.1.1. Príklad

Napíšme jednoduchý skript, ktorý zobrazí v termináli bežný dialóg založený na kliatbách (vyžaduje dialóg a akýkoľvek emulátor terminálu - používame xterm):

#!/bin/sh xterm -e "dialog --msgbox "Testovanie cron..." 234 234" # Toto je veľmi jednoduchý príklad, zaobchádzajte s ním tak, ako je

Pomenujme súbor crontest.sh a urobme ho spustiteľným, pretože všetko, čo je spustené pomocou cron, musí byť spustiteľné:

$ chmod +x crontest.sh

Teraz musíme upraviť tabuľku crontab používateľa a pridať položku pre náš úžasný skript:

E je nastavené na úpravu, -r na mazanie. Buďte veľmi opatrní! Mnoho systémových administrátorov neúmyselne zadalo -r namiesto -e, najmä preto, že tieto kľúče sa nachádzajú v blízkosti a vymazali všetky položky z crontab. V každom prípade s najväčšou pravdepodobnosťou uvidíte úplne zakomentovaný súbor (crontab používa # na označenie komentárov), ktorý uvádza príklady a popisuje účel polí záznamu. Áno, záznam pozostáva z polí, z ktorých posledné určuje príkaz, ktorý sa má vykonať, a zvyšok sú časové charakteristiky. Takže náš záznam crontab pre skript, ktorý sa spúšťa každých päť minút, vyzerá takto:

$ */5 * * * * export DISPLAY=:0 && /home/$user/crontest.sh

Musíme exportovať premennú DISPLAY, aby xterm nevyhadzoval chyby „DISPLAY is not set“. Teraz sa pozrime na účel každého poľa.

3.1.2. Polia Crontab

Ak ste už predtým pracovali so zástupnými znakmi, nebudete mať problém naučiť sa používať hviezdičku v crontab: to znamená, že sú za ňu nahradené všetky možné hodnoty polí. Predvolené polia na Linuxe (pozor, niektoré systémy Unix používajú rôzne implementácie cron) sú zľava doprava: minúta, hodina, deň v mesiaci, mesiac, deň v týždni, rok (voliteľné) a príkaz na vykonanie. Ak teda chceme, aby sa náš skript spúšťal každých päť minút, každú hodinu, každý deň, každý mesiac a každý rok, náš záznam by mal vyzerať takto:

5 * * * * export DISPLAY=:0 && /home/$user/crontest.sh

Vyzývame vás, aby ste boli opatrní pri poli deň v týždni: vo vašej krajine môže byť prvým dňom v týždni pondelok, ale v iných krajinách to môže byť nedeľa. Ak pracujete v multikultúrnom, mnohonárodnom prostredí, musíte si byť vedomí kultúrnych a náboženských charakteristík. Cron posiela upozornenia používateľovi, ktorý vlastní záznam mailová adresa predvolene ( [e-mail chránený]$hostname). Ak chcete zmeniť svoju e-mailovú adresu, stačí pridať "MAILTO=$email_address" do crontab. Ak chcete túto funkciu zakázať, pridajte ">/dev/null 2>&1" na koniec záznamu.
Teraz, ak ste už unavení z vyskakovacieho okna každých päť minút, znova spustite crontab -e, aby ste položku vymazali alebo, jednoduchšie, komentovali. Ak chcete zobraziť obsah crontab, jednoducho použite možnosť -l (zoznam).

3.2. Pozrite sa na /etc/

3.2.1. cron skripty

V predchádzajúcich častiach sme riešili jednoduché a triviálne problémy, len tak na zahriatie a teraz sa pustíme do vážnych vecí. hlavička túto sekciu odkazuje na adresáre v /etc, ktoré sú zodpovedné za úlohy pravidelnej údržby systému. Napríklad v adresári /etc/cron.weekly sa nachádza skript man-db, ktorý aktualizuje databázu manuálových stránok. Všetky takéto skripty sú zahrnuté v distribúcii a spúšťajú sa podľa súboru /etc/crontab. Preto, ak chcete pochopiť ich prácu, je najlepšie preštudovať si obsah tohto súboru. Uvidíte záznamy podobné tým, ktoré sme urobili predtým, ale vykonané príkazy sa budú líšiť. "run-parts" je malý nástroj určený na spustenie všetkých skriptov v danom adresári.
Pozorný čitateľ si môže všimnúť, že v /etc/crontab je jedno pole, ktoré sme pri úprave nášho crontab nevideli – ide o pole „user“. Deje sa tak z bezpečnostných dôvodov. Ak zadáte príkaz crontab -e ako $user, znamená to, že každý príkaz sa spustí ako $user. Ale keďže /etc/crontab je celosystémový, je potrebné explicitne nastaviť používateľa, pretože môže byť potrebné spúšťať určité skripty alebo programy ako iný používateľ ako root, najmä ak Systémový administrátor stará sa o bezpečnosť a podľa potreby pridáva používateľov a skupiny do systému. Príklad: zálohovanie nepotrebuje všetky oprávnenia root, iba oprávnenia na čítanie a zápis do určitých adresárov, takže správca vytvorí skupinu záloh a používateľ backupadmin s potrebné práva a spúšťa nočné zálohovacie skripty so zápisom:

30 23 * * * backupadmin /home/backupadmin/nightlybkup.sh

Tento záznam spúšťa skript nightlybkup.sh každú noc o 23:30. Ak chceme spúšťať zálohy iba od pondelka do piatku, musíme upraviť náš záznam:

30 23 * * 1-5 backupadmin /home/backupadmin/nightlybkup.sh

Ak chcete spúšťať zálohovanie iba v pondelok, stredu a piatok, nahraďte „1-5“ za „1,3,5“. Keď budete presne vedieť, čo potrebujete, cron bude prehľadný a ľahko použiteľný.

4. Úvahy o bezpečnosti

Existuje veľa situácií, keď nechcete, aby používateľ, ktorý má prístup k vášmu systému, mohol vytvárať crontab záznamy. Tu prichádzajú do hry /etc/cron.deny a /etc/cron.allow. Ich použitie je podobné ako v súboroch /etc/hosts.allow a /etc/hosts/deny, takže ak ste už s týmito súbormi pracovali, budete sa cítiť ako doma. Tieto dva súbory (cron.deny a cron.allow) nie sú štandardne v systéme, aspoň v systéme, na ktorom pracujeme, takže štandardne môže každý vytvárať položky crontab. Môžete skontrolovať, ktoré súbory súvisiace s cronom sú vo vašom adresári /etc pomocou príkazu:

$ ls / atď | grep cron

A opäť pripomíname, že všetko vyššie uvedené platí pre Linux, keďže absencia týchto súborov na Solarise znamená presný opak, navyše sa súbory nachádzajú na iných miestach. Najprv sa skontroluje cron.allow, takže zvyčajne do cron.deny zadáme „ALL“ a potom do cron.allow pridáme používateľov, ktorým chceme udeliť prístup.

5. Príklady použitia cronu

Každú minútu:

* * * * * /usr/local/bin/check-disk-space.sh

Príkaz sa vykoná každú minútu, deň a mesiac.

Podľa dní:

30 02 10 01,06,12 * /home/$user/bin/checkdrive.sh

Tento príkaz spustí skript checkdrive.sh o 02:30 každého 10. januára, júna a decembra.

Každú pol hodinu:

00:30 * * * * /home/$user/backupdata.sh

Len cez víkendy:

* * * * 6,7 /usr/bin/víkend

Dvakrát denne:

20 11,16 * * * /usr/sbin/príkaz

Príkaz sa vykoná každý deň o 11:20 a 16:20.

Každú hodinu v konkrétny deň:

01 * 2 05 * /sbin/system_command

Každých 10 minút počas piatich pracovných dní (pondelok – piatok):

*/10 * * * 1-5 /usr/local/bin/check-disk-space.sh

Len počas otváracích hodín:

00 09-17 * * 1-5 /usr/local/bin/check-disk-space.sh

Tento príkaz sa vykoná raz denne od 9:00 do 17:00.

0 0 1 1 * /usr/local/bin/check-disk-space.sh

Dvakrát do roka o 12:00 a o 24:00

0 0,12 1 */6 * /usr/local/bin/check-disk-space.sh

Tento príkaz sa vykoná dvakrát ročne (každých 6 mesiacov) o 12:00 a o 24:00.

Každý tretí štvrtok v danom mesiaci o 10:00:

0 10 15-21 * 4 /usr/local/bin/check-disk-space.sh

Každý deň 20 minút po každej párnej hodine:

20 0-23/2 * * * /usr/local/bin/check-disk-space.sh

Tento príkaz sa vykoná každý deň 20 minút po každej párnej hodine (0:20, 2:20...22:20).

6. Záver

Ak ste si najprv mysleli, že položky crontab sú ťažko pochopiteľné a mätúce, uisťujem vás, že keď budú neustále používanie veľmi skoro si zapamätáte poradie a účel všetkých polí, ako aj názov a umiestnenie všetkých súborov, ktoré je potrebné upraviť. Chce to len prax.

Ak sa vám tento článok páčil, zdieľajte ho so svojimi priateľmi:

Úvod

Hostením stránky chceme dosiahnuť neprerušovaná prevádzka bez našej účasti.

To znamená, že musíte automatizovať procesy a tu prichádza na pomoc cron.

Cron- program, démon pre automatický štart programy a skripty na serveri v požadovaný čas.

Crontab v ovládacom paneli Timeweb

Ak je váš účet zaplatený a nezachytili ste spamovanie, sekcia Crontab je dostupná a funkčná:

Rozhranie Crontab v ovládacom paneli Timeweb je priateľské a intuitívne: aj začiatočníci bez predchádzajúcich skúseností s cron ľahko prídu na to, ako vytvárať úlohy. Po vytvorení úlohy môžete automatický režim robiť zálohy, maily, vymazať vyrovnávaciu pamäť a vykonávať ďalšie typické akcie.

Crontab v ovládacom paneli Timeweb pomôže každému používateľovi automatizovať jeho úlohy a dosiahnuť požadovaný výsledok.

Po základných informáciách budem hovoriť o nuansách, ktoré je dôležité zvážiť pri práci s cron.

Nové úlohy sa vytvárajú v sekcii Crontab. Ak to chcete urobiť, musíte vyplniť polia:

  • názov. Toto je názov našej úlohy.
  • Typ súboru a cesta k súboru. V závislosti od jazyka, v ktorom je skript napísaný, vyberte typ súboru a cestu k nemu. Ak úloha spúšťa skript, ktorý vyžaduje premenné webového servera, jej spustenie priamo cez interpret php vedie k chybám. Preto v prípade, že používate skript, ktorý funguje pri spustení cez panel s adresou prehliadača, musíte vybrať typ súboru „Žiadosť HTTP“ a zadať adresu URL požiadavky rovnakým spôsobom, ako je uvedené v adresný riadok"vaša_stránka/cesta/k/skriptu/script.php?možnosť1=hodnota1&možnosť2=hodnota2".

Ak je to potrebné, špecifikujte jeden administrátorský účet v sekcii Crontab. Správy sa budú odosielať do tejto poštovej schránky, ak sa pri spustení skriptu v konzole objaví správa.

Nuansy

Malé nuansy, ktoré treba mať na pamäti pri práci s cron.

1. Cron funguje, ak je účet zaplatený a neexistujú žiadne obmedzenia.

Stav môžete skontrolovať vytvorením súboru s rozšírenie php(napríklad twtest.php) s kódom:

A prístup k súboru v prehliadači.

V prehliadači uvidíte informácie:

uid=12345(prihlásenie) gid=600(zákazníci) skupiny=600(zákazníci) - označuje, že kron a pošta sú k dispozícii

uid=12345(prihlásenie) gid=600(zákazníci) skupiny=601(noví zákazníci),600(zákazníci),660(spameri) - napíšte na podporu

2. Súbor, ktorý spustíte, musí mať povolenia na čítanie a spustenie (r+x).

Štandardne sa súbory na hostingu vytvárajú s oprávneniami 600. Povolenia môžete zmeniť na tie, ktoré potrebujete cez ssh príkazom:

Chmod 744 twtest.php

alebo v Správca súborov, Timeweb má k tomu pokyny:

3. Aby ste nezahadzovali e-maily zbytočnými listami,konfigurovať často vykonávané skripty na prihlásenie do súboru, nie do konzoly.

CRON cez SSH

Nastavenie plánovača cez ssh bolo popísané toľkokrát, že nový nebude možné povedať.

Pripojenie cez ssh je podrobne popísané v centrum pomoci timeweb:

Po prečítaní musíte nájsť súbor so skriptom a presúvať sa medzi adresármi pomocou príkazu cd. Keď nájdete súbor typu pwd a skopírujte cestu (príklad "/home/c/cc123456/public_html/test/")

Ak neviete, aké oprávnenia má súbor, zadajte:

Chmod 744 názov súboru

Pri pripájaní cez ssh môžete upravovať úlohy pomocou príkazu

Crontab -e

Prvýkrát, keď vás server požiada o výber editora:

Vyberte editor. Ak chcete zmeniť neskôr, spustite "select-editor". 1. /bin/ed 2. /bin/nano<---- easiest 3. /usr/bin/mcedit 4. /usr/bin/vim.basic 5. /usr/bin/vim.tiny Choose 1-5 :

Systém ukazuje na jednoduchý nano editor pod číslom 2. Ak ste zle vypočítali sily alebo ste omylom vybrali vi, nezľaknite sa, stlačte Esc, potom napíšte dvojbodku q a stlačte enter.

Ak chcete zmeniť editor, zadajte príkaz:

výberový editor

a vyberte nano.

Úlohy sa píšu riadok po riadku. Príklad:

1 2 3 4 5 /opt/php56/bin/php /home/c/ss123456/public_html/twtest.php

Význam prvých piatich hodnôt je:

  • 1 minúta je číslo od 0 do 59
  • 2 hodiny - číslo od 0 do 23
  • 3. deň v mesiaci - číslo od 1 do 31
  • 4 je číslo mesiaca v roku - číslo od 1 do 12
  • 5. deň v týždni - číslo od 0 do 7 (0-ne, 1-pon, 2-ut, 3-st, 4-št, 5-pi, 6-so, 7-ne)

Pre každý parameter je možné nastaviť požadovaný počet hodnôt oddelených čiarkami. Ak napríklad do poľa „hodiny“ napíšete 8:23, úloha sa spustí o 8:00 a 23:00. Môžete si nastaviť interval: 9-18 znamená, že program sa spustí každú hodinu v čase od 9 do 18 hodín vrátane. Symbol "*" znamená "všetky možné hodnoty". Napríklad zadanie „*“ v poli „hodiny“ bude znamenať „spustiť každú hodinu“. Symbol "/" sa používa na označenie dodatočnej frekvencie úlohy. Napríklad „*/3“ v poli „minúty“ znamená „každé tri minúty“.

"/opt/php*/bin/php" kde php*/ = php53/ php5.3/ php54/ php5.4/ php56/ php5.6/ php70/ php7.0/ php71/ php7.1/

Posledná položka označuje cestu k súboru a názov súboru, ktorý spúšťame.

Nuansy

  1. Pri zmene v ovládacom paneli v sekcii "Crontab" budú zmeny v záznamoch vykonané cez ssh vymazané!
  2. Ak sú zadefinované obe polia „deň v mesiaci“ aj „deň v týždni“, potom sa takáto úloha vykoná každý zadaný deň v týždni bez ohľadu na deň v mesiaci. Napríklad nasledujúci príkaz sa spustí o 9:19 každú stredu a každý 7. deň v mesiaci, aj keď 7. deň nie je streda.

19 9 7 * 3 /opt/php56/bin/phpn /home/c/ss123456/public_html/twtest.php

Špeciálne prípady

Ak chcete spustiť úlohu viac ako raz za minútu, použite režim spánku.

Ak to chcete urobiť, napíšte do crontab:

* * * * * /opt/php56/bin/php /home/k/konoplev/tmp/twtest.php; /bin/sleep30; /opt/php56/bin/php /home/k/konoplev/tmp/twtest.php

spustiť súbor každých 30 sekúnd.

Niekedy pri použití plánovača programu cron nie je známe, ako dlho trvá vykonanie skriptu. Aby sa predišlo dvojitému spusteniu skriptu, vyžaduje sa kontrola dokončenia predchádzajúceho spustenia skriptu.

Logickou možnosťou by bolo vytvorenie súboru zámku a kontrola existencie súboru pri spustení skriptu. Ale na hostingu Timeweb, ako aj na iných hostingoch, je limit procesora. Skript závisí od podmienok a času vykonania, čo znamená, že nemôžeme predpovedať čas vykonania skriptu. Ak sa skript spustí v rozpore s pravidlami a obmedzeniami ( ), potom sa proces skončí na strane hostiteľa. Potom sa súbor zámku neodstráni, čo znamená, že skript nebude spustený cronom, kým sa súbor neodstráni.

Maestro z inžinierskeho oddelenia povedal, ako problém vyriešiť.

Najprv vytvorte skript sh v súbore /home/c/cc123456/tmp/twtest.sh:

#!/bin/bash [e-mail chránený] no_spaces=`echo $príkaz | sed -e "s/\s/_/g" -e "s|/|_|g"` pidfile=/var/tmp/$no_spaces.pid lockfile=/var/tmp/$no_spaces.lock if [[ -e $pidfile ]] potom pid=`mačka $pidfile 2>/dev/null` ps h $pid >/dev/null 2>/dev/null ak[[$? -eq 0 ]] potom ukončite 1 else rm $lockfile fi fi echo $$ > $pidfile /usr/bin/flock -w 0 $lockfile $príkaz rm $pidfile

V ovládacom paneli v časti crontab vyberte typ „Spustiteľný binárny súbor“.

Do poľa „Úplná cesta“ napíšte:

/home/c/cc123456/tmp/twtest.sh /opt/php56/bin/php /home/c/cc123456/tmp/twtest.php

Kde

  • /home/c/cc123456/tmp/twtest.sh - náš testovací skript
  • /opt/php56/bin/php - cesta k požadovanému tlmočníkovi
  • /home/c/cc123456/tmp/twtest.php - cesta k nášmu skriptu

Zadajte požadovaný čas spustenia a vymyslite názov.

Záver

Teraz viete, ako pracovať s cron a spúšťať úlohy automaticky. Viac detailné informácie pre cron hľadajte v "man cron". Veľa štastia!

V systéme linuxúlohy automaticky spúšťa démon crond a nielen správca systému, ale aj používatelia môžu naplánovať automatické spúšťanie úloh.

Ako funguje crond

Spôsob, akým démon crond funguje, je jednoduchý. Po spustení (zvyčajne pri zavádzaní systému) sa démon prebudí každú minútu a skontroluje, či je na túto minútu naplánovaný nejaký program. Ak sa takéto programy nájdu, démon ich spustí a odošle e-mail správy používateľom, ktorí naplánovali spustenie.

Plánovanie úloh

Plánovanie je jednoduchá úloha. Rozvrh je umiestnený v samostatnom súbore crontab. Každý riadok súboru obsahuje úlohu, ktorá musí byť spustená v určitom čase.

Formát záznamov crontab

Časť čas-dátum pozostáva z piatich číselných polí oddelených medzerami, ktoré určujú, kedy sa mala úloha spustiť:

Na uľahčenie vyplnenia týchto polí boli zavedené nasledujúce pravidlá:

  • Hodnoty môžete zadať ako číselné intervaly. Napríklad interval 1-3 v poli hodín znamená 1:00, 2:00 a 3:00 polnoc, 2-4 v poli deň v týždni - utorok, streda alebo štvrtok.
  • Intervaly je možné nastaviť v prírastkoch väčších ako jedna. Napríklad, ak chcete zadať každú druhú hodinu od polnoci, nastavte interval na 0-23 v krokoch po 2 oddelených lomkou: 0-23/2
  • Hviezdička (*) označuje celý rozsah hodnôt polí - od minima po maximum. Napríklad v poli dňa v mesiaci hviezdička znamená interval 0-31, v poli dňa v týždni - 0-7
  • Deň v týždni alebo mesiaci možno určiť prvými tromi písmenami jeho (anglického) názvu

Príklady času a dátumu

Niekoľko príkladov vyplnenia polí času a dátumu:

0 1 * * * Spustiť úlohu denne o 13:00 30 14 * * 0 Spustiť úlohu v nedeľu o 14:30 0 23-7/2:8 * * * Spustiť úlohu každé 2 hodiny od 23:00 do 7:00 a 8:00 0 12 * 1 pondelok Spustiť práca na poludnie každý pondelok v januári každý rok 0 12 2 feb * Spustite prácu každý rok druhého februára napoludnie

príkazové pole

Pole príkazu je oddelené od polí času a dátumu jednou alebo viacerými medzerami a siaha až na koniec riadku. Príkazy spracováva shell /bin/sh.

Napríklad nasledujúci záznam v súbore crontab by sa spustil /usr/sbin/backup každý deň o 1:00:

0 1 * * * /usr/sbin/backup

Niektoré príkazy (napríklad mail) vyžadujú vstup zo štandardného vstupného zariadenia. Toto je označené znakom percenta (%). Prvý takýto znak označuje začiatok štandardného vstupu, každý nasledujúci - zmenu riadku.

Úprava súboru crontab

Súbor crontab sa upraví pomocou príkazu crontab -e. Možné sú dva prístupy:

  • vytvorenie nového súboru so všetkými položkami, ktoré by mali byť zahrnuté v súbore crontab, a jeho zápis na disk pod týmto názvom pomocou príkazu crontab;
  • priamu úpravu súborov pomocou príkazu crontab -e.

Zápis zo súboru

Ak chcete zapísať obsah súboru crontab z iného súboru, musíte vytvoriť tento iný súbor (zvyčajne textový editor) so všetkými položkami, z ktorých by mal súbor crontab pozostávať. Môže to byť napríklad nasledujúci záznam:

0 1 * * * /usr/sbin/backup

Vygenerovaný súbor by mal dostať vhodný názov, napríklad úlohy cron . Po zadaný súbor vytvorený, jeho obsah musí byť zapísaný do súboru crontab príkazom:

~$ crontab cronjobs

Obsah súboru cronjobs úplne nahradí obsah súboru crontab tohto používateľa. Pomocou tejto metódy môže každý používateľ upraviť svoj súbor crontab. Superužívateľ má špeciálne právo na úpravu súbory crontab ostatných používateľov. Úprava súboru niekoho iného je označená príznakom -u. Napríklad príkazom:

~# crontab -u oleg cronjobs

súbor cronjobs je zapísaný ako súbor crontab používateľa oleg.

Priama úprava súboru crontab

Príkaz crontab sa vyhýba viackrokovej operácii vytvárania samostatný súbor. Ak zadáte príkaz crontab s voľbou -e, môžete priamo upraviť súbor crontab.

V predvolenom nastavení príkaz crontab s voľbou -e načíta súbor crontab do súboru . Editor Vi- výkonný, aj keď zložitý nástroj, obľúbený medzi skúsených používateľov Unix. Niekto, kto preferuje iný editor, napr. xupraviť, môžete nastaviť príslušnú hodnotu premenná prostredia EDITOR:

~$ export EDITOR=xedit

Potom zadajte príkaz

spôsobí, že sa súbor crontab otvorí v zadanom editore.

Rovnako ako bežný používateľ môže upravovať vlastný súbor crontab , superužívateľ môže upravovať súbory crontab iných používateľov. Na tento účel sa používa príkaz:

~# crontab -u užívateľské meno -e

Zobrazenie súboru crontab

Ak chcete zobraziť obsah súboru crontab, zadajte príkaz:

Superpoužívateľ môže zobraziť súbory crontab iných používateľov:

~# crontab -u užívateľské meno -l

Odstránenie súboru crontab

Ak chcete odstrániť obsah svojho súboru crontab, používateľ zadá príkaz:

Superpoužívateľ môže odstrániť súbory crontab iných používateľov.