Lucaine zuen argitara duela denbora gutxi cron eta crontab-i buruzko tutorial bikaina partekatzea merezi duela uste dut. Cron Windows-en Ataza Programatuen pareko mota da, soilik terminaletik maneiatzen dela. Helburu bera lortzeko interfaze bisuala nahiago dutenek ikus dezakete beste artikulu bat. |
Index
Zer da cron?
Cron izena grezierazko chronos-etik dator, "denbora" esan nahi duena. Unix sistema eragilean, cron atzeko planoko prozesuen kudeatzaile (daemon) erregularra da, prozesuak edo script-ak aldian-aldian exekutatzen dituena (adibidez, minutu, egun, aste edo hilero). Exekutatu behar diren prozesuak eta exekutatu behar diren denbora zehazten dira crontab fitxategian.
Nola funtzionatzen du?
Kron deabrua abiarazten da /etc/rc.d/ o /etc/init.d banaketaren arabera. Cron atzeko planoan exekutatzen da, crontab atazen taula minuturo egiaztatzen du / etc / crontab en / var / spool / cron burutu beharreko zereginen bila. Erabiltzaile gisa komandoak edo scriptak gehi ditzakegu zereginekin cron-i prozesu batzuk automatizatzeko. Hau erabilgarria da, adibidez, sistema baten edo segurtasun kopia sistema on baten eguneratzea automatizatzeko.
Zer da Crontab?
Crontab erabiltzaileak zehaztutako orduan exekutatu beharreko komandoen zerrenda gordetzen duen testu fitxategi sinplea da. Crontab-ek gidoia edo komandoa exekutatu behar den eguna eta ordua, exekuzio baimenak eta atzeko planoan egingo ditu egiaztatuko ditu. Erabiltzaile bakoitzak bere crontab fitxategia izan dezake, hain zuzen ere / etc / crontab root erabiltzailearen crontab fitxategia dela suposatzen da, erabiltzaile arruntek (eta baita root-ek) beren crontab fitxategia sortu nahi dutenean crontab komandoa erabiliko dugu.
Crontab erabiltzaile anitzeko sistemetan cron zereginak kudeatzeko modurik errazena da, sistema erabiltzaile soil edo root erabiltzaile gisa.
Crontab erabiliz
Adibide sinple batekin hasi gara.
Sistema baten eguneratzea automatizatuko dugu, "Beti eguneratu behar dut eta hori ez zait gustatzen!" Gogaikarriak ezabatzeko.
Lehenik eta behin gidoi bat egingo dugu. Script honi cron-ek deituko dio eta nahi ditugun argibide guztiak jasoko ditu; beraz, hainbat kasutan eta hainbat modutan probatu behar da cron-en sartu aurretik, honelako eguneratze script sinplea:
#! / bin / bash #script update example #choose your distribution # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Kendu # distro marratik. Ubuntu / Debian bada, apt-get-rekin hasten da.
Script-a update.sh izenarekin gordetzen dugu (adib. Script-ak zure etxea). Aipatutako scriptaren exekuzio baimenak aldatzen ditugu:
chmod a + x ~ / scripts / update.sh
Script-a pare bat aldiz exekutatzen dugu dena ondo funtzionatzen duela egiaztatzeko, beharrezkoa dena aldatzen dugu (ez du akatsik izan behar, bestela cronek behin eta berriro errorea errepikatuko du). Orain zeregina gure crontab-era gehitzeko.
Gehitu zereginak crontab-era
Crontab-en edizioa crontab -e-rekin exekutatzen dugu, distribuzio batzuetan (Ubuntu adibidez) nahi dugun testu editorea aukeratzeko aukera ematen digu, gainerakoan vi geratzen zaigu. Crontab fitxategiak horrelako zerbait izango du.
# mh dom mon dow erabiltzailearen komandoa
non:
- m script-a exekutatuko den minutua dagokio, balioa 0-59 bitartekoa da
- h ordu zehatza, 24 orduko formatua kudeatzen da, balioak 0 eta 23 bitartekoak dira, 0 gauerdiko 12: 00ak izanik.
- opari hileko eguna aipatzen du, adibidez 15 zehaztu ditzakezu 15 egunetan behin exekutatu nahi baduzu
- Dow asteko eguna esan nahi du, zenbakizkoa izan daiteke (0tik 7ra, non 0 eta 7 igandea den) edo eguneko lehen 3 hizkiak ingelesez: mon, tue, wed, thu, fri, sat, sun.
- erabiltzaile komandoa exekutatuko duen erabiltzailea definitzen du, root izan daiteke edo beste erabiltzaile bat script-a exekutatzeko baimenak baditu.
- komandoa exekutatu beharreko scriptaren agindua edo bide absolutua aipatzen du, adibidez: /home/usuario/scripts/update.sh, script bati deitzen badio exekutagarria izan behar du
Argitzeko cron zereginen adibide batzuk azaltzeko:
15 10 * * * erabiltzailea /home/user/scripts/update.sh
Update.sh script-a egunero 10: 15ean exekutatuko du
15 22 * * * erabiltzailea /home/user/scripts/update.sh
Egunero 10: 15ean eguneratuko du update.sh script-a
00 10 * * 0 root apt-get -y update Erabiltzaile erroa
Eguneratze bat igandero egingo du goizeko 10: 00etan
45 10 * * sun root apt-get -y eguneratzea
Erabiltzaile erroak eguneratze bat egingo du igandero (igandea) goizeko 10: 45ean
30 7 20 11 * user /home/usuario/scripts/update.sh
Azaroaren 20an 7: 30ean erabiltzaileak script-a exekutatuko du
30 7 11 11 sun user /home/usuario/scripts/pastel_con_velitas.sh
Azaroaren 11n, goizeko 7: 30ean eta igandea da, erabiltzaileak bere administratzailea (hau da, ni) ospatuko du
01 * * * * erabiltzailea /home/usuario/scripts/molestorecordatorio.sh
Egunero ordu bakoitzeko minutu oroigarri gogaikarria (EZ da gomendagarria).
Oraindik maneiatu daitezke gama bereziak:
30 17 * * 1,2,3,4,5
5: 30ean egunero astelehenetik ostiralera.
00 12 1,15,28 * *
Eguerdiko 12: 28etan hil bakoitzeko lehenengo, hamabosgarren eta XNUMXan (nominak egiteko aproposa)
Hau nahasgarria bada, crontab maneiatzaileak kate bereziak barruti horiek definitzeko.
@reboot Exekutatu behin, abiaraztean
@yearly urtean behin bakarrik exekutatzen da: 0 0 1 1 *
@urtero @urtero bezala
@hileroko hilean behin exekutatzen da, lehenengo egunean: 0 0 1 * *
@weekly Weekly asteko lehen orduko lehen minutua. 0 0 * * 0 ″.
@eguneroko egunero, 12: 00etan. 0 0 * * *
@gauerdia @egunerokoa bezalakoa
@orduko ordu bakoitzeko lehen minutuan: 0 * * * *
Erabilera oso erraza da.
@hourly user /home/user/scripts/molestorecordatorio.sh @hileroko erabiltzailea /home/user/scripts/backup.sh @ eguneroko root apt-get update && apt-get -y upgrade
Azkenik, baina ez horregatik gutxiago:
Cron lanpostuen kudeaketa
crontab fitxategia
Ordeztu lehendik dagoen crontab fitxategia erabiltzaileak definitutako fitxategi batekin
crontab -e
Editatu erabiltzailearen crontab fitxategia, lerro berri bakoitza crontab ataza berria izango da.
crontab -l
Zerrendatu erabiltzailearen crontab zeregin guztiak
crontab -d
Ezabatu erabiltzailearen crontab
crontab -c dir
Erabiltzailearen crontab direktorioa zehazten du (erabiltzaileak idazteko eta exekutatzeko baimenak izan behar ditu)
crontab -u erabiltzailea
beste erabiltzaile baten crontab-a kudeatzeko aurrizkia, adibideak:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u user
Tresna hau, beste asko bezala, sakonago eta zehatzago ikus daiteke:
48 iruzkin, utzi zurea
Uf ... pixka bat nahasgarria.
* / 30 falta dira (minutuen eremuan) 30 minuturo exekutatzen dena ...
Hau komentatuko nuen iruzkinak berrikustea erabaki nuen arte 😀
Aldatzaile hau oso informazio garrantzitsua da eta oso erabilgarria den zerbait da.
Hello!
Oraintxe bertan 45 minuturo konfigurazio bat probatzen ari naiz.
* / 45 * * * *, eta instrukzioa ordu bakoitzeko 45 minututan eta orduro exekutatzen da. Hau da:
3: 45ean, gero 4: 00etan, 4: 45ean, 5: 00etan, 5: 45ean, 6: 00etan, 6: 45ean etab.
Zerbait gaizki daukat? Zer egin dezaket 45 minuturo bakarrik edo behin gutxienez 45 minututan behin behin.
Hello!
Oraintxe bertan 45 minuturo konfigurazio bat probatzen ari naiz.
* / 45 * * * *, eta instrukzioa ordu bakoitzeko 45 minututan eta orduro exekutatzen da. Hau da:
3: 45ean, gero 4: 00etan, 4: 45ean, 5: 00etan, 5: 45ean, 6: 00etan, 6: 45ean etab.
Zerbait gaizki daukat? Zer egin dezaket 45 minuturo bakarrik edo behin gutxienez 45 minututan behin behin.
Kaixo, informazioa oso erabilgarria da cronek nola funtzionatzen duen argitzeko.
bytes
*
Bikain, eskerrak cron nola funtzionatzen duen argitzeagatik ... jar dezagun esku txiki bat 🙂
Ulertzen dudan lerro hau gaueko 10: 15ean exekutatuko da, zuzendu nazazu oker egonez gero
Beno, han esaten da goizeko 10: 15ak
15 22 * * * erabiltzailea /home/user/scripts/update.sh
Kaixo! oso informazio ona.
Script bat ordu erdiro exekutatzeko, CronTab-en gehitu behar den lerroa honakoa izango litzateke: "30 * * * * root Scrip.sh" Zuzena? Eskerrik asko!
Ez. Ondo gogoratzen badut, horretarako / 30 * * * * root Scrip.sh jarri behar duzu.
Hau da, gehitu / 30 baino lehen.
Animo! Paul.
Kaixo zure mezua gustatu zait, oso osoa da baina zerbait galdetu nahi nizun.
Arazoak ditut komando honekin eta "at" bezalako bat.
Une jakin batean script bat exekutatu nahi dut eta jartzen dut
-f /home/mi_user/Desk/script.sh 18:08 helbidean adibidea
eta gidoia ez da pantailan exekutatzen.
Kronekin gauza bera gertatzen zait, crontab fitxategia "crontab -e" -rekin editatzen dut.
amaieran lerro hau gehitzen dut:
46 19 my_user /home/mi_user/Desk/script.sh
eta ez du ezer egiten, ez du gidoia erakusten.
Iradokizunik? Mila esker eta barkatu eragozpenengatik
Terminala agertzeko, baliteke terminala exekutatzea eta script-a parametro gisa pasatzea.
Adibidez:
lxterminal -e "my_user /home/my_user/Desk/script.sh"
Erabiliko duzun parametroa alda daiteke erabiltzen duzun terminal emuladorearen arabera.
Funtzionatzea espero dut.
Besarkada! Paul.
Ekarpena eskertzen da.
10 puntu !!
salud 2!!
Mila esker, asko lagundu ninduen gauza batzuk argitzen, guztira eskerrik asko, xehetasun gehiagorengatik edo galderengatik GIZAKI ORRIALDERA joango naiz, errepikatutako agurrak.
Osabak mila esker, adibideak irakurtzen eta probatzen egon naiz. mila esker ... oso ulergarria da. Animo
Ubuntu Server 12.04.2 LTS erabili nuen eta erabiltzailearen lanen zerrenda ezabatzeko daukadan crontab bertsioa erabiltzen da, crontab -r (eta -l, eskuliburu honek dioen bezala). Ziur bertsioen arabera egiten dela.
Bestalde, behin crontab bakarrik exekutatu nuen eta honek nire exekuzio fitxategia sortzen utzi zidan, baina ez zen exekutatzen ari zena. Exekutatzen dena / etc / crontab-en dagoena da. agian norbaitek erabiliko du iruzkina.
PS (bilatu eta whereis crontab-ekin bilatzen dut baina aipatutako helbidea eta enkriptatutako beste fitxategi bat besterik ez du itzuli, beraz, exekutatu zena / etc / crontab-en bazen, baina crontab -e komandoa exekutatzean nirea agertu zen definitu nituen lan guztiekin) non gorde zen fitxategi hau '???? Agurrak. Beti erroarekin saioa hasten dut.
Bikaina, oso erabilgarria !!!
Kaixo, hau egin nahi nuke ... 15 10 * * * root ifdown eth0 »
hau da, une jakin batean sareko txartela itzalita dagoela ...... bueno, crontabean sartu dut eta ez du funtzionatu ... ... zer gertatzen da?
Agurrak eta eskerrak
"Mon" definitzea galdu duzu "Gehitu zereginak crontab" izenburuaren ondoren.
Artikulua polita da oraindik, oso erabilgarria da cron.
Zeinen polita izan zen mezu on hori, galdetu
Zereginak gauzatzeak utzitako erregistroen jarraipena egin nahi badut, non ikus dezaket?
fitxategiaren iraganean egindako ekintzen historia ikusi nahi dut eta nork aldatu duen eta data ikusi nahi dut
esker
Honen aldaketen historia egiaztatu nahi dut
nola egin dezaket
esker
Good goizean,
Ubuntu scriptean akats bat egin duzula uste dut apt-get -y upgrade ordez ap-get -y upgrade jarri duzula. (T bat utzi duzu).
Agur bero bat.
Hala da. Eskerrik asko!
Besarkada! Paul
Cron fitxategi bat nola sortu jakin nahi dut exekutatzen den bakoitzean, direktorioa eta abar zehaztu ahal izateko.
Eskerrik asko operazioa eta cron-en oinarrizko komandoak argitzeagatik, orain zeure burua pixka bat entretenitzeko.
Gnu / Linux-ekin erlazionatutako edozein gairi buruzko informazioa bilatzen dudanean azkenean bueltaka ibiltzen naiz beti kasuen% 90ean komunitate bikaineko tutorialik onena topatuz, hemendik aurrera hemendik eta beste nonbaitetik hasiko naizela uste dut. .
dagokionez
Eskerrik asko Sander! Besarkada bat! Paul.
dom = hileko eguna
dow = asteko eguna
errazagoa da elkartuz gero
Mila esker, oso osoa eta ondo azalduta.
Nire sistema eragileetako irakasleak eman zigun gauza bera da, ez dut ezer aldatzen, orain ikusten dut zergatik den hain txarra klasea.-.
Estimatutako,
Kontsulta, zeregin baten iraupena muga al daiteke?
Adibidez, 5 minuturo behin errepikatzen den zeregina daukat, zeregin hori oraindik aktiboa bada errepikatzean, hil eta berriro exekutatu.
Eskerrik asko,
Marcelo.-
Kaixo, Marcelo!
Nire ustez, hobe litzateke galdera hau planteatzen baduzu deitutako gure galdera eta erantzun zerbitzuan Galdetu FromLinux-i komunitate osoak zure arazoarekin lagun zaitzan.
Besarkada bat, Pablo.
mezu ona.
Zein da terminal bakoitzeko agindua crontab-i zereginak gehitzeko (crontab-ean sartu gabe eta 'crontab -e' eskuz gehitu edo crontab beste crontab batekin 'crontab fitxategia' ordezkatuz).
Ideia kanpoko script bat sortzea da zereginak crontab-era gehitzeko
gracias
iruditzen zait "oihartzuna" erabil dezakezula gehitu nahi duzuna "| cat >> 'cronotab bidea (/ etc / cronotab)' «
Nola funtzionatuko luke adierazpen batek 3 egunetik behin zehazki
Hello.
Arazo bat daukat cron lan bat exekutatzean.
Cronta -e-rekin zeregin hau burutzen dut:
01 * * * * root /home/user/script/mfile.sh
baina zeregina ez dago eginda. Myfile.sh-k exekuzio baimena duela egiaztatu dut eta exekutatzen duen erabiltzailea root dela.
Zeregin bera egiten dut / etc / crontab-en eta zerbitzua berrabiarazi ondoren, niretzat ere ez da funtzionatzen.
Myfile.sh-ren edukia DB bat eguneratzen duen komandoa da eta kontsolan exekutatzen badut funtzionatzen du.
arazorik izan daitekeen ideiarik al duzu?
Litekeena da datu-basearen erabiltzaileak baimen guztiak ez izatea eta lehenik inguruneko aldagaiak esportatu beharko dituzu zure datu-basetik.
Adibidez, db2-n lerro hau scriptaren hasierara joango litzateke
. / home / db2inst1 / sqllib / db2profile
Beste kausa bat izan daiteke gidoiak datu-basearekin konexioa behar izatea, gidoiaren barruan konexioa egitea
Ez nekien biribilka berrabiarazi behar nuenik, honekin borrokan aritu nintzen denbora batez
Zeregina hilaren bukaera guztietan exekutatzen dela adierazten jakingo dute, adierazitako orduan .. xehetasuna da ezin dudala lortu nola jakin hilabete bakoitzeko azken eguna behar dela .. ?? Banan-banan idatzi behar izan nituen, baina otsailaren amaiera iritsi zenean bizikeria dela eta zaila da niretzat ..
egun ona!!
Nola gelditu crontab-en exekutatzen ari den prozesua?
prozesua * …………
Lagunduko zenidake? minha egilearen gidoia ez du funtzionatzen eta horrek ez du funtzionatzen crontab! Baita baimen guztiak, exekutatu dezakeen kroniko edo erabiltzaile zehatz pribaturik ez da ezer gertatzen! Lagundu ahal didazun jakin nahi nuke, beste gauza batzuek ez dute funtzionatzen cronik gabe! Vlws
Nola jarriko zenuke zeregin bat hileko azken egun guztietan exekutatzeko (egunak: 31-30-28)?
Dagoeneko dakizuenez, su komandoa kontsola bateko erabiltzailea aldatzeko erabiltzen da. Su komandoa honela erabiltzen badut: "zure erabiltzailea" aldatu erabiltzailea baina "erabiltzailea" ezarpen egokirik gabe, su gisa honela exekutatzen badut: "su - erabiltzailea" aldatu erabiltzailea erabiltzailearen ezarpenak kargatuz. Cron-ekin erabiltzailea adierazten dut, baina nola kargatu erabiltzaile honen ezarpenak?
Eta gelditu nahi badut?
Kaixo,
Ez dakit zer egiten ari naizen gaizki, baina urratsak jarraitzen ditut eta ez da ezer exekutatzen. Saiatu naiz:
59 * * * * / usr / bin / gedit
* * * * * / usr / bin / gedit
* * * * * root / usr / bin / gedit
* * * * * usr / bin / test.sh
* * * * * root usr / bin / test.sh
eta ezer ere ez. Ez du ezer exekutatzen. Berrabiarazi dut eta dena.
thank you very much