Príklady Crontab každý deň. Zápis zo súboru. Dostávať správu o práci Crona poštou

  • 18.05.2019

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 správa systému Linux, potom musíte 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 je to dobre zvolený názov, keďže hlavným účelom cronu je pomôcť s plánovaním. rôzne úlohyže systém musí dokončiť v danom čase. 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 navrhnutý pre seriózne úlohy správy 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 začína pomocou cron, by mal 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 naša položka crontab pre skript, ktorý sa spúšťa každých päť minút, vyzerá nasledujúcim spôsobom:

$ */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 ( [chránený e-mailom]$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 správca systému dbá na bezpečnosť a pridáva používateľov a skupiny do systému podľa potreby. 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ť položky crontab. 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ú definované obe polia „deň v mesiaci“ a „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 [chránený e-mailom] 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 našich materiáloch venovaných Server Ubuntu Z času na čas sa objaví otázka vykonávania akýchkoľvek úloh podľa plánu. Aby sme nevysvetľovali zakaždým to isté, rozhodli sme sa tvoriť daný materiálčo by malo pomôcť správcov systému ovládať a efektívne využívať plánovač úloh v systéme Linux.

Ubuntu Server používa ako plánovač úloh cron- plánovač s rozhraním príkazový riadok. Je dôležitou súčasťou systému a začína fungovať ihneď po inštalácii a spúšťa rôzne systémové úlohy. Naším cieľom je dať to do našich služieb, najmä preto, že to nie je také ťažké, ako sa zdá.

Existujú dva typy rozvrhov cron: používateľ a systém. Líšia sa tým, že prvý je vytvorený používateľmi a spúšťaný s používateľskými právami, druhý sa používa na administratívne alebo systémové účely a môže byť spustený v mene ktoréhokoľvek používateľa.

Ak chcete vytvoriť alebo upraviť vlastný plán, zadajte príkaz:

Crontab -e

Pri prvom spustení vás utilita vyzve na výber editora, odporúčame vybrať mcedit(vyžaduje nainštalovaný mc), alebo iný editor, s ktorým viete pracovať.

Formát rozvrhových riadkov je:

Príkaz minúta hodina deň mesiac deň_týždeň

  • Minúta- čas v minútach od 0 do 59
  • hodina- od 0 do 23
  • deň- deň v mesiaci od 1 do 31
  • mesiac- od 1 do 12 resp písmenové označenia jan - dec
  • Deň v týždni- od 0 do 6 (0 - nedeľa) alebo so - ne
  • Tím- reťazec vo formáte shell, ktorý sa vykoná, môže byť zapísaný ako príkaz1 && príkaz2 na spustenie viacerých príkazov za sebou.

Minúty, hodiny, dni je možné špecifikovať nasledovne:

  • Význam- číslo označujúce dátum alebo čas, zástupný znak je povolený * v plnom rozsahu
  • Niekoľko významov- je povolené zadať niekoľko hodnôt oddelených čiarkami, napríklad 2,14,22
  • Rozsah hodnôt- označené pomlčkou, napríklad 2-10
  • Hodnotový krok- označené zlomkom, ktorého menovateľom je krok, napríklad */3 - každá tretia hodnota 0, 3, 6, 9 atď. Čitateľ musí byť rozsah hodnôt alebo hviezdička.

Zvážte nasledujúci príklad vstupu:

0 8-19/2 * * 1 /domov/ivanov/test

To znamená, že každú druhú hodinu od 8 do 19 (8, 10, 12, 14, 16) v pondelok spustíte testovací skript v Ivanovovom domovskom adresári.

Okamžite vás chceme varovať pred častou chybou, pri zadávaní periodického vykonávania musia byť výslovne uvedené všetky dátumy, hviezdička označuje celý rozsah hodnôt a nie ich absenciu. Napríklad, ak potrebujete spustiť určitý skript každú hodinu od 10 do 15, bolo by to nesprávne:

* 10-15 * * * /domov/ivanov/test

Tento riadok spustí skript každú minútu v rozmedzí od 10. do 15. hodiny. Bude to správne:

0 10-15 * * * /domov/ivanov/test

Táto položka umožní spustenie skriptu na začiatku každej hodiny v zadanom rozsahu.

Okrem dátumu je možné použiť niekoľko špeciálnych reťazcov:

  • @reštartovať- spustiť príkaz pri reštarte
  • @ročne alebo @ročne- vystupovať 1. januára, podobne ako v zázname: " 0 0 1 1 * "
  • @mesačne- vykonávať 1. deň každého mesiaca podobne “ 0 0 1 * * "
  • @týždenne- vystupovať každú nedeľu, je ekvivalentné „ 0 0 * * 0 "
  • @denne alebo @polnoc- každý deň o polnoci 0 0 * * * "
  • @hodina- raz za hodinu, 0 * * * * "

Takže pre každodenné vykonávanie nášho skriptu každú polnoc môžete napísať:

@midnight /home/ivanov/test

Po dokončení plánovania uložte súbor a ukončite editor. Vlastný rozvrh bude uložený v /var/spool/cron/crontabs pod menom súčasný užívateľ.

Pre systémové a administratívne úlohy sa poskytuje súbor. /etc/crontab syntax položiek v ňom sa vyznačuje prítomnosťou ďalšej hodnoty - používateľa, pod menom ktorého sa úloha spustí:

Užívateľský príkaz minúta hodina deň mesiac deň_týždeň

Príklad takéhoto zápisu:

0 19 * * 1-5 root /etc/backup

Podľa čoho sa o 19:00 od pondelka do piatku spustí scenár /etc/backup v mene užívateľa koreň.

Tento súbor obsahuje aj systémové plány, preto by sa mal upravovať opatrne. V ňom by mali byť umiestnené všetky systémové a administratívne úlohy.

Ako vidíme cron pomerne jednoduché použitie, ale zároveň poskytuje bohaté príležitosti na nastavenie plánov na serveri Ubuntu. Dúfame, že tento článok pomôže správcom zvládnuť tento nástroj.

Cron je plánovač úloh, ktorý beží na hostingu Unix\Linux. Umožňuje vám automaticky vykonávať určité akcie na serveri (spúšťanie programov, skriptov atď.), s daný čas alebo frekvenciu.

Správna konfigurácia plánovača úloh Cron

Úlohy pre Cron možno opísať nasledovne - ide o niekoľko riadkov (jeden riadok - jedna úloha), ktoré označujú frekvenciu spúšťania a príkaz (čo znamená, čo vlastne treba spustiť):

30 3 * * 2 /vasadresar/myscript.pl

Schematicky:

Minúty Hodiny DeňMesiac Mesiac DeňTýždne Príkaz

minút- nastavte číslom od 0 do 59

Sledujte- nastavte číslom od 0 do 23

deň v mesiaci- nastavte číslom od 1 do 31

mesiac- nastaviť ako číslo od 1 do 12

Deň v týždni- 1 - pondelok, 2 - utorok, 3 - streda, 4 - štvrtok, 5 - piatok, 6 - sobota, 7 - nedeľa

V našom príklade (30 3 * * 2 /vášadresár/myscript.pl) teda back znamená, že musíte spustiť súbor /vášadresár/myscript.pl každý utorok o 3:30

V každom z polí môžeme tiež použiť:

Písanie s čiarkami: 2,5,16 - ak to napíšete do poľa Hodiny, úloha sa spustí o 2:00, 5:00 a 16:00.

Interval: 5-9 - ak to napíšete do poľa Minúty, úloha sa spustí každú minútu v intervale od 5 do 9 minút.

Dodatočná periodicita: /4 - ak to napíšete do poľa hodín, bude to znamenať, že spustenie bude prebiehať každé 4 hodiny.

Dôležité! Hviezdička (*) znamená všetky možné hodnoty! Neskúsený webmaster, ktorý sa rozhodne, že na spustenie úlohy vždy 1. dňa v mesiaci stačí napísať * * 1 * * /yourdirectory/myscript.pl, narazí na skutočnosť, že úloha sa spustí každú minútu, každú hodinu.

Ako a kde zadať úlohy Cron?

Prvý spôsob práce s Cronom je cez ovládací panel hostingu. Ale v rôzne panely konfigurácia a správa sa vykonávajú rôznymi spôsobmi:

cPanel: Ovládací panel -> Cron Jobs

ISP Manager: Ovládací panel -> Plánovač (Cron)

Parallels Plesk: Ovládací panel -> Naplánované úlohy

Ak váš poskytovateľ hostingu nemá možnosť pracovať s úlohami prostredníctvom ovládacieho panela, potom sa všetka práca s Cron zvyčajne vykonáva prostredníctvom protokolu SSH. Všetko je tu jednoduché - pripojte sa k serveru cez SSH a zadávajte príkazy. Na pripojenie k serveru použite zadarmo program PuTTY(ako konfigurovať) a príkazy sa zadávajú na príkazovom riadku.

Ak chcete začať, zadajte príkaz

Potom budete s najväčšou pravdepodobnosťou preradení na textový editor vi (rôzni poskytovatelia môžu mať rôznych redaktorov). vi je pomerne zložitý editor, preto vám odporúčame skúsiť napísať riadok

Ak sa spustí ľahší editor, potom je všetko v poriadku, ale ak ho nepodporuje váš poskytovateľ hostingu, potom Google pomôže pochopiť s vi. Len stručne načrtneme hlavné body:

Zadávanie textu- stlačte kláves i a editor sa prepne do režimu zadávania textu;

ukončiť režim zadávania textu- Esc

Odstrániť symbol- x (ak ste v režime testovacieho zadávania, potom na vymazanie znaku najskôr stlačte Esc a potom x);

Dôležité! Pri zadávaní úloh pre Cron po každom riadku musíte stlačiť Enter, aj keď je tento riadok jediný.

Ak chcete zobraziť existujúce úlohy Cron, zadajte crontab -l

Cron úlohy s užitočnými príkladmi

Pozrite si pravidlá pre zostavovanie úloh Cron. Spustiť úlohu každé 2 hodiny po 0 minútach (každý deň, každý mesiac)

0 */2 * * * /vasadresar/myscript.pl

Spustite úlohu vždy po reštarte servera

@reboot /yourdirectory/myscript.pl

Spustite úlohu v stredu o 3:20 (každý deň, každý mesiac)

20 3 * * 3 /vasadresar/myscript.pl
1 0 14 3 * /vášadresár/myscript.pl

Spustite úlohu každý mesiac 1. o 3:15 (každý mesiac)

15 3 1 * * /vášadresár/myscript.pl

Naplánujte spustenie súborov PHP s programom Cron

Na spustenie PHP skriptov cez Cron môžete použiť špeciálny tlmočník. Bohužiaľ Vám nemôžeme dať návod na jeho obsluhu, pretože. môžu používať rôzni poskytovatelia iný softvér. Preto veľa správcov webu spúšťa súbory PHP pomocou WGET, na tento účel používame nasledujúci záznam crontab:

30 3 * * 2 root wget -O - -q -t 1 http://mysite.com/file.php

"-O -" znamená, že Cron nevytvorí extra súbory, ale bude fungovať cez konzolu. Vyhnete sa tak preplneniu servera.

"-q" zakáže zobrazenie operácie na obrazovke

"-t 1" je povolený iba jeden pokus o pripojenie.

http://mysite.com/file.php – cesta k vášmu súboru PHP (nemusí to byť absolútna cesta).

Dôležité! Ak zadávate parametre pomocou tohto súboru PHP, potom sú chvíle, keď ich WGET nespracuje správne. V tomto prípade odporúčame zadať adresu súboru PHP do jednoduchých úvodzoviek:

30 3 * * 2 root wget -O - -q -t 1 "http://mysite.com/file.php"

Existuje aj iný spôsob, ako začať:

30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php

V tomto prípade však potrebujete poznať cestu k priečinku wget na vašom serveri (zvyčajne /usr/bin/wget alebo /usr/local/bin/wget).

Dostávať správu o práci Crona poštou

Cron je možné nakonfigurovať na email prijaté správy s výsledkami spustených úloh. Táto funkcia môže byť užitočná aj na upozornenie v prípade chyby. Ak chcete dostať správu e-mailom, musíte upraviť crontab (pred úlohami) a napísať nasledujúci riadok:

kde [chránený e-mailom]- toto je e-mail, na ktorý sa budú posielať listy. Môžete tiež pridať viacero adries oddelených čiarkami.

Je tu ešte jedna vec, výsledok skriptu dostanete aj poštou. ak napríklad skript napíše na obrazovku nejaký nápis, rovnaký nápis sa odošle na vašu poštu spolu so správou. Ak vás to obťažuje, pridajte riadok na koniec úlohy > /dev/null 2>&1

30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php > /dev/null 2>&1

Na systémoch podobných Linuxu môže byť veľmi často potrebné automatizovať niektoré rutinné procesy. Na tento účel sa používajú špeciálne plánovače. Jedným z najznámejších z nich je Cron, ktorého nastaveniam sa budeme venovať v tomto článku.

čo je Cron?

Názov programu je odvodený z gréckeho „chronos“, čo znamená čas. Čo je vlastne logické. Úlohou démona je určité momenty vykonávať príkazy v ňom napísané. Samotný proces implementácie je založený na kontrole cron tabuliek a ich porovnávaní s časom.

súbor crontab

Najdôležitejším prvkom nastavenia Cron je konfiguračný súbor crontab. Obsahuje vykonávacie príkazy a cesty k skriptom. Všetky bežia ako superužívateľ. Keďže sú umiestnené v adresári /etc/cron.d, tieto súbory musia byť nakonfigurované tam.

Každý jednotlivý používateľ systému má svoje vlastné súbor crontab.

Rôzne distribúcie Linuxu používajú rôzne adresáre úložiska užívateľské nastavenia. Pre RedHat je to var / cievka/cron. Na Debiane a Ubuntu to bude var/spool/cron/crontabs. A var/spool/cron/tabs v SUSE.

Zoznam príkazov na správu crontab

Cron má sadu špeciálnych príkazov, ktoré možno použiť na ovládanie plánovača. Musíte ich použiť v spojení s crontabom. Tu je krátky zoznam:

  • -u používateľské meno. Nastaví používateľa, ktorého úlohy a nastavenia budú spracované ďalšie akcie. Ak vynecháte daný kľúč, potom sa nastaví predvolený používateľ.
  • -l. Zobrazí aktuálny zoznam úloh.
  • -e. Spustí editor pre plánovač úloh.
  • -r. Odstráni všetky existujúce úlohy zo zoznamu.

Formát úlohy

Ako už bolo spomenuté vyššie, konfigurácia Cronu spočíva v nastavovaní príkazov špeciálny súbor. Vyzerá to ako jednoduchý zápis pozostávajúce zo šiestich stĺpcov:

  • prvý je počet minút. Dostupný interval je od 0 do 59. Je možné použiť viacero hodnôt, rozsah a Špeciálne symboly;
  • druhý stĺpec sú hodiny. Môžu sa použiť hodnoty od 0 do 23;
  • ďalej - deň. Tu môžete zadať číslo od 1 do 31;
  • štvrtý mesiac. Minimálna hodnota 1, maximálne - 12;
  • piaty týždeň. 0 alebo 7 zodpovedá nedeli;
  • posledný príkaz je ten, ktorý sa vykonáva.

Ako už bolo spomenuté, v súbore môžu byť špecifikované špeciálne znaky, "*" alebo "/". Napríklad taký záznam - 23 */2 *** echo "Run" znamená, že každú párnu hodinu a 23 minút sa zobrazí nápis "Run".

Vlastnosti súboru crontab

Pri nastavovaní Cron musíte pamätať na to, že má špecifické vlastnosti, ktoré je potrebné vziať do úvahy pri konfigurácii:

  • každý súbor musí skončiť prázdny reťazec, inak môže byť ignorovaná posledná položka a niekedy aj celý súbor;
  • súbory umiestnené v adresároch s bodkou v názve budú plánovačom tiež ignorované;
  • znaky libry "#" možno použiť v konfiguračných súboroch. Používajú sa na označenie riadkov s komentármi. To je veľmi užitočné pri popise naplánovaných úloh a príkazov.

Ďalšie premenné

Pri nastavovaní Cronu môžete v príkazoch použiť špeciálne hodnoty a skratky. Ak chcete napríklad určiť deň v týždni, môžete použiť nasledujúci zoznam:

  • slnko - nedeľa
  • pondelok - pondelok
  • utorok - utorok;
  • streda - streda;
  • štvrtok - štvrtok;
  • piatok - piatok
  • sobota - sobota.

Existujú aj samostatné hodnoty písmen pre mesiace - jan, feb, mar, apr, máj, jún, júl, aug, sep, oct, nov, dec.

Existujú aj samostatné premenné na konfiguráciu Cron, ktoré môžu nahradiť celé príkazové riadky:

  • @reštartovať. Príkaz sa spustí pri každom spustení počítača;
  • @ročne. Táto úloha bude prebiehať raz ročne. Ekvivalentný zápis v číselnom tvare môže byť: 0 0 1 1 *. Jeho synonymum môže byť napísané aj ako @ročne;
  • @mesačne. Ako by ste mohli uhádnuť z názvu, táto premenná spúšťa príkaz raz za mesiac. Jeho číselný náprotivok je 0 0 1 * *;
  • @týždenne. Táto premenná sa spustí každý týždeň;
  • @denne. Raz za deň;
  • @polnoc. Spustenie sa uskutoční o polnoci;
  • @hodina. Každú hodinu.

Nastavenie Cron na Centos 7

Samotný proces inštalácie a konfigurácie sa príliš nelíši od iných podobných Linuxové distribúcie. Pred nastavením Cron na Centos musíte do systému nainštalovať balík cronie. Môžete to urobiť pomocou príkazu yum install cronie. Ak chcete vytvoriť súbor s pokynmi, musíte v termináli spustiť crontab -e. Všetky systémové nastavenia Cron bude uložený v /var/spool/cron/username.

Niekoľko užitočných príkladov vytvárania často sa opakujúcich úloh

Dá sa držať nastavenie cronu tak, aby pokryl takmer všetky potreby každého užívateľa.

  • 00 09-17 * * 1 - 5 /cesta/ k príkazu/korune. Tento príkaz automaticky vykoná naplánovanú akciu každý pracovný deň od 9:00 do 5:00 každú prvú minútu;
  • 00 9.17 * * * /cesta/ k príkazu/ cron. V tomto príklade sa príkaz vykoná dvakrát denne. Prvý o 9, druhý - o 5:00. Znak "*" znamená, že príkaz sa vykoná každý deň, mesiac a rok;
  • Tiež nezabudnite na symbolické premenné. Napríklad @monthly spustí úlohu každý mesiac v prvej minúte prvej hodiny prvého dňa. A @daily pobeží každý deň.