Kuidas ajastada Linuxis ülesandeid Croni ja Crontabiga

Kuidas ajastada Linuxis ülesandeid Croni ja Crontabiga

Kas teadsite, et Terajooksja on seatud 2019. Sellest on kolm aastat! Rääkimata Tagasi tulevikku 2 , kus nad sõidavad ajas edasi aastasse 2015. Ometi pole meil lendavaid autosid ja meie seas pole replikaate (minu teada).





Praeguses tehnoloogias on lihtne tunda pettumust, kui võrrelda seda tuleviku väljamõeldud kujutistega. Sellegipoolest saavad tänapäeval meie telefonid, arvutid ja isegi majad teha hämmastavaid asju. Ülesannete automatiseerimise võimalus on üks neist.





Iga Linuxi kasutaja saab ajastamisülesannetest kasu, olenemata sellest, kas need on süsteemiga seotud (nt vanade logide puhastamine ja pakettide uuendamine ) või kasutaja teenindamine (e -posti kontrollimine, taskuhäälingusaadete allalaadimine ...). Windowsi kasutajatel on olnud Task Scheduler alates Windows 95 -st. Utiliiti, mis teeb Linuxis sama tööd, nimetatakse croniks ja siin selgitame, kuidas seda kasutada.





miks netflix minu telefonis ei tööta?

Mis on Cron?

Cron on süsteemiteenus, mis töötab taustal, kontrollib plaanitud ülesandeid ja käivitab need, kui neid leiab. Ülesanded - mida nimetatakse ka 'cron -töödeks' - on määratletud spetsiaalsetes konfiguratsioonifailides (crontabs), mida cron skannib iga minut. Erinevates Linuxi distributsioonides võib leida mitmeid croni versioone. Näiteks nimetatakse Fedora croni kahvlit cronie , ja on ka neid fcron , bcron ja dcron . Mõnel on lisafunktsioone, samas kui teised on rohkem keskendunud turvalisusele, kuid need kõik põhinevad samal ideel.

See juhend on kirjutatud vixie-cronile, mis on croni kõige levinum versioon ja see, mille leiate Ubuntu ja selle tuletisinstrumentide hulgast. Kuigi enamik juhiseid kehtib ka teiste croni rakenduste kohta, võib esineda väikseid erinevusi, seega vaadake nende kasutusjuhendeid, kui otsustate vahetada.



Mis on Crontab?

Kui kavatsete tõsiselt oma aega korraldada, on teil tõenäoliselt mingi kalender - rakendus või vähemalt paberitükk. Crontab sarnaneb väga teie arvuti kalendriga. See sisaldab teavet plaanitud ülesannete kohta, öeldes cronile, milliseid käske mis ajal käivitada.

Tegelikult on teie süsteemis mitu crontabi. Igal kasutajal on oma crontab, sealhulgas root (administraator). Kasutaja crontabs on salvestatud





/var/spool/cron/crontabs/

. The

crontab -l

käsk kuvab praeguse kasutaja crontab -faili. Juur crontabi saate kontrollida nupuga





sudo crontab -l

.

Lisaks on seal süsteemi crontab -fail

/etc/crontab

mida kasutatakse kogu süsteemi hõlmavate ülesannete täitmiseks. Tavaliselt on need juurutatavate skriptide kujul

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

ja

/etc/cron.monthly/

kaustad ja mõned distributsioonid

/etc/cron.d/

kaust. Üldiselt ei peaks te nende ülesannetega tegelema, kuna enamik neist luuakse installitud rakenduste abil automaatselt.

Kuidas Croniga ülesandeid ajastada?

See kõlab lihtsalt: ülesannete ajastamiseks lisage need lihtsalt oma crontabi. Kuna crontab on spetsiaalne konfiguratsioonifail, pole soovitatav seda käsitsi muuta. Selle asemel kasutage

crontab -e

käsk. Juure või teiste kasutajate crontabide muutmiseks käivitage käsk administraatoriõigustega ja lisage nende kasutajanimi pärast valikut -u:

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

Crontab -failil on kaks jaotist. Esimene neist sisaldab keskkonnamuutujaid, mis seadistatakse automaatselt. Muutjaid PATH, HOME ja SHELL saate turvaliselt muuta ning muutujat MAIL muuta.

Faili teine ​​osa on teie plaanitud ülesannete tegelik ajakava. Iga ülesanne täidab tabelis rea (rea), mille veerud tähistavad järgmisi väärtusi:

Ülesannete edukaks ajastamiseks peate natuke teadma crontabi süntaksist:

  • Numbrid peaksid olema täisarvud (täisarvud) ja tärni (*) saate kasutada mis tahes veerus metamärgina, mis tähendab „iga minut/päev/kuu ...”.
  • Olge veerus „Kuu päev” ettevaatlik, et mitte määrata kuupäeva, mis ei esine veerus „Kuu“ määratud kuul (näiteks 30. veebruar).
  • Mõlemad veerud „Kuu” ja „Nädala päev” aktsepteerivad lühikesi nimesid vastavalt kuudeks ja päevadeks ning need ei erista väiketähti.
  • Veerus „Nädala päev” tähistavad nii 0 kui ka 7 pühapäeva. Veerg „Tund” nõuab vormingut „sõjaväeline aeg” (24 tundi), kuid te ei saa kasutada numbrit 24-selle asemel tähistab 0 kella 12.00. Seda seetõttu, et minutite, tundide ja nädalapäevade väärtused algavad 0 asemel 1.
  • Sekundeid ei toetata, nii et te ei saa teatud ajahetkel toimingut ajastada.

Saate planeerida kaasavaid ajavahemikke sidekriipsu abil (14–22 jaotises „Tundi” käivitab ülesande pidevalt kella 14–22) või käivitada ühe ülesande mitu korda, määrates komaga eraldatud loendi (1, 3,5 jaotises „Nädala päev” täidab ülesannet esmaspäeval, kolmapäeval ja reedel).

Vahepeal on astmeväärtused tähistatud kaldkriipsuga (/) ja need näitavad vahelejätmiste arvu vahemikus; näiteks 3-20/3 jaotises „Tundi” täidab ülesannet iga kolme tunni järel kella 3–20. See on kasulik, kui soovite korrata ülesandeid iga X tunni järel, kuna saate tärni ja sammu kombineerida (*/X). Kui kasutate numbreid, saate vahemikke kombineerida loendite ja vahemikega sammudega. Teisisõnu, sellised kombinatsioonid nagu 'jaan-mar' või 'teisipäev, reede-pühapäev' ei ole lubatud.

Teise võimalusena võite iga veeru väärtuse määramise asemel kirjutada rea ​​algusesse @weekly, @yearly, @monthly, @daily või @hourly, millele järgneb käsk. Sellise ajakava kohaselt toimivad ülesanded esimesel võimalusel, nii et @weekly töötaks nädala esimesel päeval keskööl. Kui soovite ülesande kohe pärast süsteemi taaskäivitamist käivitada, kasutage käsku @reboot.

Selles näites oleme ajastanud varundamise iga päev kell 08:20 ja 20:20. Taustapilt muutub automaatselt iga kolme päeva tagant kell 19:00 ja skript kontrollib uusi esituslaule igal esmaspäeval kell 10.20 ja 20.20. Sünnipäeva meeldetuletus on määratud 25. märtsiks ja see jookseb määratud aja jooksul iga 30 minuti järel. Lõpuks kontrollib skript e -kirju iga 15 minuti järel 8-20, kuid ainult tööpäevadel. Saate oma crontabi vabalt korraldada tühikute ja sakkidega veergude vahel, kuid mitte nende sees (ärge pange tühikuid koma, sidekriipsu ja kaldkriipsu vahele).

Kui see kõik tundub liiga keeruline, ärge muretsege - võite alati loota Internetile. Tööriistad nagu Crontabi generaator , Crontab.guru ja Corntab aitavad teil luua croni töökohti, teadmata crontabi süntaksit. Need näitavad teile, millal töö järgmisena käivitub, ja pakuvad malle tavaliselt kasutatavate väljendite jaoks. Crontab.guru on parim, sest see võimaldab teil crontabi süntaksit reaalajas testida, nii et näete kohe, kuidas teie muudatused ajakava mõjutavad.

Kuidas kontrollida, kas Croni töid täidetakse

Cron peaks töötama vaikselt taustal ja laskma teil oma ülesannete eest hoolt kandmata häirimatult töötada. Aga kuidas saate veenduda, et see tegelikult töötab?

Cronil on sisseehitatud meilimärguannete funktsioon, kuid see nõuab vähemalt lihtsa kohaliku e-posti serveri seadistamist. Mitte paljud kodukasutajad ei ole valmis seda seadistama ja paljud distributsioonid ei paku seda vaikimisi (näiteks Ubuntu seda ei tee). Kiireim viis croni kontrollimiseks on süsteemi logi skannimine selle käsuga:

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

Valik -i muudab meie päringu tõstutundetuks. Võimalik, et cronil on kusagil oma logifail

/var/log/

, nii et vaadake sinna, kui see käsk ei anna kasulikke tulemusi.

Kui teil on vaja salvestada konkreetse croni töö väljund, saate selle faili ümber suunata. Sisestage faili tee ja nimi oma crontabi viimasesse veergu pärast käsku, mida soovite käivitada:

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

Ühe sümboli> kasutamine kirjutab faili üle iga kord, kui käsk käivitatakse. Selle vältimiseks kasutage selle asemel >> - see lisab väljundi olemasolevale failile.

Mis siis, kui Cron ei tööta?

Võib juhtuda, et olete lisanud mõned ülesanded, kontrollinud süsteemilogisid ja leidnud, et need ei tööta nii nagu peaks. Siin on mõned asjad, mida peaksite probleemi lahendamisel kaaluma ja olema ettevaatlik.

Kas cron -teenus töötab?

Nagu teate, peaks cron -deemon töötama taustal. Veenduge, et see tõesti nii oleks. Teenust nimetatakse kas crondiks või lihtsalt croniks.

Systemd kasutavate distributsioonide puhul:

systemctl status cron

Upstarti kasutavate distributsioonide puhul:

service cron status

Kui teie levitamisel kasutatakse „vana” süsteemi V init lähenemist, loetlege kõik teenused, millel on:

kuidas Apple Watchis salvestusruumi tasuta vabastada
initctl list

ja vaata, kas cron on loetletud.

Kas teil on isegi crontab -faili omamine lubatud?

Kontrolli oma

/etc

nimega failide kaust

cron.allow

ja

cron.deny

. Ubuntus ei tohiks kumbki eksisteerida, mis tähendab, et kõigil kasutajatel on lubatud hallata croni töid. Siiski, kui on olemas a

kuidas leida kellegi amazonite nimekirja
cron.allow

fail, peab see sisaldama teie kasutajanime. Vastupidi, kui

cron.deny

fail on olemas, ei tohiks teie kasutajanimi selles olla. Lahkudes

cron.deny

fail tühi tähendab, et ainult juur ja kasutajad on loetletud

cron.allow

võib olla crontab -faile.

Kas teie muutujad on õigesti seadistatud?

Crontab määrab teie SHELLi muutuja automaatselt väärtuseks

/bin/sh

. Siiski, kui teie valitud kest on kala või bash, peaksite muutma SHELL muutujat

. Samamoodi sisaldab muutuja PATH vaikimisi ainult mõnda kataloogi. Siin otsib crontab Linuxi käske. Kui teie croni töö ei õnnestu, võib põhjus olla selles, et crontab ei näe teie kasutatud käsku. Selle vältimiseks lisage käsklusi sisaldavad kataloogid muutujale PATH, eraldades need koolonitega:

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

Kui te ei soovi seda oma crontab'is muuta, saate need muutujad määrata skriptis, mida soovite cron -tööna käivitada.

Kas teie crontab -vormindus on õige?

Crontabi süntaks pole just sujuv purjetamine. Isegi kui kontrollite seda eelnevalt mainitud veebitööriistadega, võib väike viga siiski takistada cronit teie töid täitmast. Olge ettevaatlik:

  • lisage crontab -faili lõppu tühi rida
  • väljuge % -märgist tagasilöögiga, kui teie käsk seda sisaldab
  • kirjutage kommentaarid eraldi ridadena, mis algavad #-ga. Ärge kirjutage kommentaare keskkonna muutujatega samale reale ega croni töökäskude juurde.

Kas peate tõesti terminali kasutama?

Absoluutselt mitte. KDE kasutajad saavad ajastada croni töid KCroniga, mis on saadaval aadressilt Süsteemi seaded> Ülesannete planeerija moodul. Tänu lihtsale liidesele, mis võimaldab teil valida ja kohandada kõike vaid mõne hiireklõpsuga, on KCroni kasutamine rõõm.

Kui eelistate GNOME'i, siis GNOME ajakava on sinu jaoks. Lähenemisviis on sarnane, kuigi liides on eeldatavasti veidi erinev. See pakub täiustatud režiimi peeneteraliste muudatuste tegemiseks ja on varustatud paneeli apletiga, mille abil saate ülesandeid otse hallata.

Peaksite olema teadlik muudest lahendustest, näiteks Crontab-UI ja Minikroon . Need sobivad rohkem kasutajatele, kes haldavad mitut masinat ja cron-tööd, ning nende üks lahedamaid funktsioone on veebipõhine liides.

Kas on Croni alternatiive?

Kuigi cron on Linuxi jaoks tavaline ülesannete planeerija, pole see kindlasti ainus. The käsu peale sobib suurepäraselt kiireteks ühekordseteks töödeks, mida saab ajastada otse käsurealt ilma spetsiaalsete konfiguratsioonifailideta. Kui vajate rohkem, on see olemas GNUbatch , mis tutvustab sõltuvuse mõistet. GNUbatchi abil saate määrata iga töö jaoks konkreetseid tingimusi või muuta ajastatud ülesande sõltuvaks eelmisest. Midagi sarnast on võimalik saavutada süsteemi taimerid . Kuigi konfigureerimine on vähem praktiline kui cron, mäletavad systemd -taimerid, kui mõni ülesanne jäi arvuti väljalülitamisel ajakavast ilma, ja käivitavad selle järgmisel korral.

See on asi, mida cron üksi teha ei saa. See sobib sellisena serveritele ja arvutitele, mis töötavad pidevalt, kuid ei täida tööd, mis oli planeeritud arvuti väljalülitamisel. See on koht, kus anakron tuleb mängu. See ei ole tehniliselt croni alternatiiv ega asendaja. Selle asemel täiendab anacron cronit ja seda tuleks selle kõrval kasutada, mis kehtib paljude Linuxi distributsioonide, sealhulgas Ubuntu ja Ubuntu-põhiste toodete puhul. Anacron logib, millal ülesanne viimati täideti, ja kontrollib, kas süsteemi väljalülitamisel ei olnud ühtegi vahelejäänud eksemplari. See käivitab need arvuti uuesti sisselülitamisel, kuid iga ülesannet saab täita ainult üks kord päevas.

Mõned croni versioonid, näiteks fcron, pakuvad vaikimisi anacroni funktsioone. Kogenud kasutajad võiksid vaadata Hcron või SuperCron , mis toovad palju parandusi põhilistesse cron -funktsioonidesse, kuid on ka mõnevõrra keerulised hallata.

Aga sina? Kuidas korraldate oma digitaalseid ülesandeid? Milliseid ülesandeid plaanite Linuxis? Jagage kommentaarides oma lugusid ja näpunäiteid croni kasutamise kohta.

Pildikrediit: graafikutahvel autor Gonzalo Aragon Shutterstocki kaudu

Jaga Jaga Piiksuma E -post 12 videosaidi, mis on paremad kui YouTube

Siin on mõned YouTube'i alternatiivsed videosaidid. Igaüks neist hõivab erineva niši, kuid tasub oma järjehoidjatesse lisada.

Loe edasi
Seotud teemad
  • Linux
  • Linux
Autori kohta Ivana Isadora Devcic(Avaldatud 24 artiklit)

Ivana Isadora on vabakutseline kirjanik ja tõlkija, Linuxi armastaja ja KDE fangirl. Ta toetab ja edendab tasuta ja avatud lähtekoodiga tarkvara ning otsib alati värskeid ja uuenduslikke rakendusi. Uurige, kuidas ühendust võtta siin .

Rohkem Ivana Isadora Devcicilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin