Kaip suplanuoti užduotis „Linux“ naudojant „Cron“ ir „Crontab“

Kaip suplanuoti užduotis „Linux“ naudojant „Cron“ ir „Crontab“

Ar žinote, kad Ašmenų bėgikas numatyta 2019 m.? Tai po trejų metų! Jau nekalbant Atgal į ateitį 2 , kur jie keliauja laiku į 2015 metus. Tačiau mes neturime skraidančių automobilių ir tarp mūsų nėra replikantų (kiek žinau).





Lengva jaustis nusivylus dabartinėmis technologijomis, kai lyginame jas su išgalvotais ateities vaizdais. Vis dėlto šiais laikais mūsų telefonai, kompiuteriai ir net namai gali padaryti nuostabių dalykų. Gebėjimas automatizuoti užduotis yra vienas iš jų.





Kiekvienas „Linux“ vartotojas gali pasinaudoti planavimo užduotimis, nesvarbu, ar jos susijusios su sistema (pvz., Išvalyti senus žurnalus ir paketų atnaujinimas ) arba aptarnauti vartotoją (tikrinti el. paštą, atsisiųsti transliacijas ...). „Windows“ vartotojai užduočių planuoklį turi nuo „Windows 95“. Tą patį darbą atliekanti programa „Linux“ vadinama cron, ir čia paaiškinsime, kaip ja naudotis.



kaip visiškai išvalyti standųjį diską

Kas yra Kronas?

„Cron“ yra sistemos paslauga, kuri veikia fone, tikrina suplanuotas užduotis ir jas atlieka, jei randa. Užduotys, dar vadinamos „cron job“, yra apibrėžtos specialiuose konfigūracijos failuose (crontabs), kuriuos „cron“ nuskaito kiekvieną minutę. Skirtinguose „Linux“ platinimuose galima rasti kelias „cron“ versijas. Pavyzdžiui, vadinama Fedoros šakutė kroni , ir taip pat yra fcron , bcron , ir dcron . Kai kurie turi papildomų funkcijų, o kiti labiau orientuoti į saugumą, tačiau visi jie pagrįsti ta pačia idėja.

Šis vadovas yra skirtas „vixie-cron“, kuri yra labiausiai paplitusi „cron“ versija ir kurią rasite „Ubuntu“ ir jo dariniuose. Nors dauguma instrukcijų taikomos ir kitiems „cron“ diegimams, gali būti nedidelių skirtumų, todėl, jei nuspręsite pakeisti, patikrinkite jų vadovus.



Kas yra „Crontab“?

Jei rimtai planuojate valdyti savo laiką, tikriausiai turite kažkokį kalendorių - programą ar bent popieriaus lapą. „Crontab“ yra labai panašus į jūsų kompiuterio kalendorių. Jame yra informacija apie suplanuotas užduotis, nurodant cron, kokias komandas paleisti kada.

Tiesą sakant, jūsų sistemoje yra keletas crontabų. Kiekvienas vartotojas turi savo crontab, įskaitant root (administratorius). Vartotojo crontabs saugomi





/var/spool/cron/crontabs/

. The

crontab -l

komanda parodys dabartinio vartotojo crontab failą. Šaknies crontab galite patikrinti naudodami





sudo crontab -l

.

Be to, yra sistemos crontab failas

/etc/crontab

kuris naudojamas visos sistemos užduotims. Paprastai jie yra vykdomųjų šakninių scenarijų forma, įdėta

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

, ir

/etc/cron.monthly/

aplankus ir kai kuriuos platinimus

/etc/cron.d/

aplanką taip pat. Apskritai, jums nereikėtų spręsti šių užduočių, nes dauguma jų automatiškai sukuriamos įdiegtose programose.

Kaip suplanuoti užduotis su Cron

Tai skamba paprastai: suplanuokite užduotis, tiesiog pridėkite jas prie savo „crontab“. Kadangi „crontab“ yra specialus konfigūracijos failas, nerekomenduojama jo redaguoti rankiniu būdu. Vietoj to naudokite

crontab -e

komandą. Norėdami redaguoti root ar kitų vartotojų „crontabs“, paleiskite komandą su administratoriaus teisėmis ir pridėkite jų vartotojo vardą po parinkties -u:

sudo crontab -u root -e
sudo crontab -u username -e

„Crontab“ faile yra du skyriai. Pirmajame yra aplinkos kintamieji, kurie nustatomi automatiškai. Galite saugiai pakeisti kintamuosius PATH, HOME ir SHELL bei keisti MAIL kintamąjį.

Antroji failo dalis yra tikrasis „tvarkaraštis“ su jūsų suplanuotomis užduotimis. Kiekviena užduotis lentelėje užima eilutę (eilutę) su stulpeliais, reiškiančiais šias reikšmes:

Norėdami sėkmingai suplanuoti užduotis, turite šiek tiek žinoti apie „crontab“ sintaksę:

  • Skaičiai turi būti sveikieji skaičiai (sveikieji skaičiai), o žvaigždutę (*) galite naudoti bet kuriame stulpelyje kaip pakaitos simbolį, reiškiantį „kiekvieną minutę/dieną/mėnesį ...“.
  • Stulpelyje „Mėnesio diena“ būkite atsargūs ir nenustatykite datos, kuri neįvyksta stulpelyje „Mėnuo“ nurodytą mėnesį (pvz., Vasario 30 d.).
  • Stulpeliuose „Mėnuo“ ir „Savaitės diena“ sutinkami trumpi pavadinimai atitinkamai mėnesiams ir dienoms, jie neskiria didžiųjų ir mažųjų raidžių.
  • Stulpelyje „Savaitės diena“ 0 ir 7 reiškia sekmadienį. Stulpeliui „Valanda“ reikalingas „karinio laiko“ (24 valandų) formatas, tačiau negalite naudoti skaičiaus 24-vietoj to 0 reiškia 12 val. Taip yra todėl, kad prasideda minutės, valandos ir savaitės dienos reikšmės 0 vietoje 1.
  • Sekundės nepalaikomos, todėl negalite suplanuoti užduoties tam tikrą sekundę.

Tai galite padaryti suplanuodami įtraukimo laiko intervalus naudodami brūkšnelį (14–22, esantys skiltyje „Valandos“, užduotis bus vykdoma nepertraukiamai nuo 14 iki 22 val.), Arba paleisti vieną užduotį kelis kartus, apibrėžiant kableliais atskirtą sąrašą (1, 3,5 pagal „Savaitės dieną“ užduotį atliks pirmadienį, trečiadienį ir penktadienį).

Tuo tarpu žingsnių reikšmės vaizduojamos pasviruoju brūkšniu (/) ir jos nurodo praleidimų skaičių diapazone; Pavyzdžiui, 3-20/3 pagal „Valandos“ užduotį vykdys kas tris valandas nuo 3 iki 20 val. Tai naudinga, kai norite kartoti užduotis kas X valandas, nes galite sujungti žvaigždutę ir žingsnį (*/X). Jei naudojate skaičius, galite derinti diapazonus su sąrašais ir veiksmus su diapazonais. Kitaip tariant, neleidžiami tokie deriniai kaip „jan-mar“ arba „antradienis, penktadienis“.

Arba vietoj to, kad nustatytumėte kiekvieno stulpelio vertę, eilutės pradžioje galite tiesiog parašyti @weekly, @yearly, @monthly, @daily arba @hourly, po kurios eina komanda. Suplanuotos taip, užduotys bus vykdomos pirmuoju įmanomu atveju, todėl @weekly būtų vykdomas pirmosios savaitės dienos vidurnaktį. Jei norite paleisti užduotį iškart, kai sistema (iš naujo) paleidžiama, naudokite komandą @reboot.

Šiame pavyzdyje kiekvieną dieną suplanavome atsarginę kopiją 08:20 ir 20:20. Ekrano užsklanda automatiškai keičiasi kas tris dienas 19:00 val., O scenarijus kiekvieną pirmadienį 10:20 ir 20:20 tikrins, ar nėra naujų transliacijų. Gimtadienio priminimas nustatytas kovo 25 d. Ir jis rodomas kas 30 minučių per nurodytą laikotarpį. Galiausiai scenarijus tikrina el. Paštą kas 15 minučių nuo 8 iki 20, bet tik darbo dienomis. Galite laisvai tvarkyti „crontab“ naudodami tarpus ir skirtukus tarp stulpelių, bet ne jų viduje (nedėkite tarpų tarp kablelių, brūkšnelių ir brūkšnių).

Jei visa tai skamba pernelyg sudėtingai, nesijaudinkite - visada galite pasikliauti internetu. Įrankiai kaip „Crontab“ generatorius , Crontab.guru ir „Corntab“ padeda sukurti „cron“ darbo vietas nežinant jokios „crontab“ sintaksės. Jie parodo, kada bus vykdomas kitas darbas, ir pateikia šablonus dažniausiai naudojamoms išraiškoms. „Crontab.guru“ yra geriausias iš daugybės, nes jis leidžia tiesiogiai patikrinti „crontab“ sintaksę, todėl galite iš karto pamatyti, kaip jūsų pakeitimai paveiks tvarkaraštį.

Kaip patikrinti, ar „Cron“ darbai atliekami

„Cron“ turėtų veikti tyliai fone ir leisti jums netrukdomai dirbti, kol rūpinasi jūsų užduotimis. Bet kaip jūs galite įsitikinti, kad jis iš tikrųjų veikia?

„Cron“ turi įmontuotą el. Pašto pranešimų funkciją, tačiau tam reikia nustatyti bent paprastą vietinį pašto serverį. Ne daugelis namų vartotojų nori tai sukonfigūruoti, o nedaugelis paskirstymų tai suteikia pagal numatytuosius nustatymus (pavyzdžiui, „Ubuntu“ to nedaro). Greičiausias būdas patikrinti „cron“ yra nuskaityti sistemos žurnalą naudojant šią komandą:

cat /var/log/syslog | grep -i cron

Pasirinkus -i mūsų užklausa nejaučia didžiųjų ir mažųjų raidžių. Gali būti, kad „cron“ kažkur turės savo žurnalo failą

/var/log/

, todėl žiūrėkite ten, jei ši komanda nesuteikia naudingų rezultatų.

Jei jums reikia išsaugoti tam tikros „cron“ užduoties išvestį, galite ją nukreipti į failą. Paskutiniame „crontab“ stulpelyje po komandos, kurią norite paleisti, nurodykite kelią ir failo pavadinimą:

30 * * * * /usr/bin/yourcommand > /home/username/logfile.txt

Naudojant vieną> simbolį, failas bus perrašytas kiekvieną kartą paleidus komandą. Norėdami to išvengti, vietoj to naudokite >> - jis prideda išvestį prie esamo failo.

Ką daryti, jei „Cron“ neveikia?

Gali atsitikti taip, kad pridėjote keletą užduočių, patikrinote sistemos žurnalus ir pastebėjote, kad jos neveikia taip, kaip turėtų. Štai keletas dalykų, kuriuos turėtumėte apsvarstyti ir būti atsargūs bandydami išspręsti problemą.

Ar veikia „cron“ paslauga?

Kaip žinote, „cron“ demonas turėtų veikti fone. Įsitikinkite, kad taip yra iš tikrųjų. Paslauga vadinama crond arba tiesiog cron.

Paskirstymams naudojant systemd:

systemctl status cron

Paskirstymui naudojant „Upstart“:

service cron status

Jei jūsų platinime naudojamas „senas“ „System V init“ metodas, išvardykite visas paslaugas su:

tūris yra per didelis riebalams32
initctl list

ir pažiūrėkite, ar sąraše yra cron.

Ar jums netgi leidžiama turėti „crontab“ failą?

Patikrink savo

/etc

failų aplanką pavadinimu

cron.allow

ir

cron.deny

. „Ubuntu“ nė vienas iš jų neturėtų egzistuoti, o tai reiškia, kad visiems vartotojams leidžiama valdyti „cron“ užduotis. Tačiau jei yra a

hp nešiojamojo kompiuterio ventiliatoriaus triukšmas windows 10
cron.allow

failą, jame turi būti jūsų vartotojo vardas. Priešingai, jei

cron.deny

failas yra, jūsų vartotojo vardo jame neturėtų būti. Palikdamas

cron.deny

tuščias failas reiškia, kad tik root ir vartotojai, išvardyti

cron.allow

gali turėti „crontab“ failus.

Ar jūsų kintamieji tinkamai nustatyti?

„Crontab“ automatiškai nustato jūsų SHELL kintamąjį

/bin/sh

. Tačiau, jei jūsų pasirinktas kiautas yra žuvis arba bash, turėtumėte pakeisti SHELL kintamąjį

. Panašiai kintamajame PATH pagal numatytuosius nustatymus yra tik keli katalogai. Čia „crontab“ ieško „Linux“ komandų. Jei jūsų „cron“ užduotis nepavyksta paleisti, tai gali būti dėl to, kad „crontab“ „nemato“ jūsų naudojamos komandos. Norėdami to išvengti, pridėkite katalogus, kuriuose yra komandos, į kintamąjį PATH, atskirtus dvitaškiais:

PATH =/opt/myapp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Jei nenorite to redaguoti savo crontab, galite apibrėžti šiuos kintamuosius scenarijuje, kurį norite paleisti kaip cron užduotį.

Ar jūsų „crontab“ formatavimas yra tinkamas?

„Crontab“ sintaksė nėra sklandi. Net jei patvirtinsite tai naudodami anksčiau minėtus internetinius įrankius, nedidelė klaida vis tiek gali neleisti „cron“ atlikti jūsų darbų. Būkite atsargūs:

  • „crontab“ failo pabaigoje pridėkite tuščią eilutę
  • pabėgti nuo % ženklo su pasviruoju brūkšniu, jei jūsų komanda tai įtraukia
  • rašykite komentarus kaip atskiras eilutes, prasidedančias #. Nerašykite komentarų toje pačioje eilutėje kaip ir aplinkos kintamieji arba šalia „cron job“ komandų.

Ar tikrai turite naudotis terminalu?

Visiškai ne. KDE vartotojai gali suplanuoti „cron“ užduotis naudodami „KCron“, kurią galima pasiekti iš Sistemos nustatymai> Užduočių planuotojas modulis. Su paprasta sąsaja, leidžiančia pasirinkti ir patobulinti viską vos keliais pelės paspaudimais, „KCron“ malonu naudotis.

Jei jums labiau patinka GNOME, tada GNOME tvarkaraštis yra tau. Metodas yra panašus, nors sąsaja, tikėtina, šiek tiek skiriasi. Jis siūlo išplėstinį režimą smulkioms modifikacijoms, taip pat yra skydelio programėlė, iš kurios galite tiesiogiai valdyti užduotis.

Turėtumėte žinoti kitus sprendimus, pvz „Crontab-UI“ ir „Minicron“ . Jie labiau tinka vartotojams, valdantiems kelias mašinas ir „cron“ darbus, o viena iš nuostabiausių jų funkcijų yra žiniatinklio sąsaja.

Ar yra kokių nors Cron alternatyvų?

Nors „cron“ yra beveik standartinis „Linux“ užduočių planuotojas, jis tikrai nėra vienintelis. The pagal įsakymą puikiai tinka greitam, vienkartiniam darbui, kurį galima suplanuoti iš komandinės eilutės be specialių konfigūracijos failų. Jei jums reikia daugiau, yra GNUbatch , kuri įveda priklausomybės sąvoką. Naudodami „GNUbatch“ galite kiekvienai užduočiai nustatyti konkrečias sąlygas arba suplanuotą užduotį padaryti priklausomą nuo ankstesnės. Kažką panašaus galima pasiekti su sistemos laikmačiai . Nors konfigūruoti yra mažiau praktiška nei „cron“, sisteminiai laikmačiai gali prisiminti, ar užduotis praleido tvarkaraštį, kai kompiuteris buvo išjungtas, ir paleisti ją kitą kartą įjungus.

Cron to negali padaryti vienas. Taigi jis tinka nuolat veikiantiems serveriams ir kompiuteriams, tačiau jis neatliks užduoties, kuri buvo suplanuota, kai kompiuteris buvo išjungtas. Tai kur anakronas ateina į žaidimą. Techniškai tai nėra „alternatyva“ ar „cron“ pakaitalas. Vietoj to, „anacron“ papildo „cron“ ir turėtų būti naudojamas kartu su juo, kaip yra daugelyje „Linux“ platinimų, įskaitant „Ubuntu“ ir „Ubuntu“ pagrįstus produktus. „Anacron“ registruoja, kada paskutinį kartą buvo atlikta užduotis, ir patikrina, ar nebuvo išleistų atvejų, kai sistema buvo išjungta. Jis bus paleistas, kai vėl įjungsite kompiuterį, tačiau kiekvieną užduotį galima atlikti tik vieną kartą per dieną.

Kai kurios „cron“ versijos, pvz., „Fcron“, pagal numatytuosius nustatymus siūlo „anacron“ funkcijas. Patyrę vartotojai gali norėti pažvelgti Hcronas arba „SuperCron“ , kurie daug patobulina pagrindines „cron“ funkcijas, tačiau taip pat yra šiek tiek sudėtingi valdyti.

O tu? Kaip organizuojate savo skaitmenines užduotis? Kokias užduotis planuojate „Linux“? Pasidalykite savo istorijomis ir patarimais, kaip naudoti cron komentaruose.

Vaizdo kreditas: tvarkaraščio lenta pateikė Gonzalo Aragon per „Shutterstock“

Dalintis Dalintis „Tweet“ Paštu 12 vaizdo įrašų svetainių, kurios yra geresnės nei „YouTube“

Štai keletas alternatyvių „YouTube“ vaizdo įrašų svetainių. Kiekvienas iš jų užima skirtingą nišą, tačiau verta juos pridėti prie savo žymių.

Skaityti toliau
Susijusios temos
  • Linux
  • Linux
Apie autorių Ivana Isadora Devcic(Paskelbti 24 straipsniai)

Ivana Isadora yra laisvai samdoma rašytoja ir vertėja, „Linux“ mylėtoja ir KDE mėgėja. Ji palaiko ir skatina nemokamą ir atviro kodo programinę įrangą, ir ji visada ieško naujų, novatoriškų programų. Sužinokite, kaip susisiekti čia .

Daugiau iš Ivana Isadora Devcic

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia