Lucaine hän julkaisi jokin aika sitten erinomainen opetusohjelma cronista ja crontabista jonka mielestäni kannattaa jakaa. Cron on eräänlainen vastaava Windowsin ajoitetuille tehtäville, vain, että se käsitellään terminaalista. Ne, jotka haluavat visuaalisen käyttöliittymän saman tavoitteen saavuttamiseksi, voivat nähdä tämän toinen kohde. |
Mikä on cron?
Nimi cron tulee kreikkalaisista chronosista, mikä tarkoittaa "aikaa". Unix-käyttöjärjestelmässä cron on säännöllinen taustaprosessien hallinta (daemon), joka suorittaa prosesseja tai komentosarjoja säännöllisin väliajoin (esimerkiksi joka minuutti, päivä, viikko tai kuukausi). Suoritettavat prosessit ja niiden suorittamisen ajankohta määritetään crontab-tiedostossa.
cómo teokset
Cron-daemon alkaa /etc/rc.d/ o /etc/init.d jakelusta riippuen. Cron juoksee taustalla, tarkistaa crontab-tehtävätaulukon joka minuutti / Etc / crontab vuonna / var / kela / cron etsimään suoritettavia tehtäviä. Käyttäjänä voimme lisätä komentoja tai komentosarjoja tehtävien kanssa croniin automatisoimaan joitain prosesseja. Tästä on hyötyä esimerkiksi järjestelmän päivityksen tai hyvän varmuuskopiointijärjestelmän automatisointiin.
Mikä on Crontab?
Crontab on yksinkertainen tekstitiedosto, joka tallentaa luettelon suoritettavista komennoista käyttäjän määrittelemänä ajankohtana. Crontab tarkistaa päivämäärän ja kellonajan, jolloin komentosarja tai komento on suoritettava, suoritusoikeudet ja se tehdään taustalla. Jokaisella käyttäjällä voi olla oma crontab-tiedosto, itse asiassa / Etc / crontab sen oletetaan olevan pääkäyttäjän crontab-tiedosto, kun tavalliset käyttäjät (ja jopa root) haluavat luoda oman crontab-tiedoston, käytämme crontab-komentoa.
Crontab on helpoin tapa hallita cron-tehtäviä monen käyttäjän järjestelmissä joko yksinkertaisena järjestelmän käyttäjänä tai pääkäyttäjänä.
Crontabin käyttö
Aloitamme yksinkertaisella esimerkillä.
Aiomme automatisoida järjestelmän päivityksen poistamaan ärsyttävät "Minun täytyy aina päivittää enkä pidä siitä!"
Ensinnäkin teemme käsikirjoituksen. Cron kutsuu tätä komentosarjaa ja sisältää kaikki haluamamme ohjeet, joten se on testattava useissa tapauksissa ja monin tavoin ennen sen sisällyttämistä croniin, yksinkertaiseen päivityskomentoon, kuten tämä:
#! / bin / bash #script-päivitysesimerkki #valitse jakelusi # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Poista # jakeluriviltäsi. Jos se on Ubuntu / Debian, se alkaa apt-get.
Tallennamme komentosarjan nimellä update.sh (esim. Komentosarjat hakemisto kotisi). Muutamme mainitun komentosarjan suoritusoikeudet seuraavilla tavoilla:
chmod a + x ~ / scripts / update.sh
Suoritamme komentosarjan muutaman kerran varmistaaksemme, että kaikki toimii sujuvasti, muokkaamme tarvittavaa (se ei saa sisältää virheitä, muuten cron toistaa virheen vain uudestaan ja uudestaan). Nyt voit lisätä tehtävän crontabiin.
Lisää tehtäviä crontabiin
Suoritamme crontab-version crontab -e: llä, joissakin distroissa (kuten Ubuntu) se antaa meille mahdollisuuden valita haluamasi tekstieditori, loput jäävät vi. Crontab-tiedosto näyttää tältä.
# mh dom mon dow -komento
missä:
- m vastaa komentosarjan suoritushetkeä, arvo vaihtelee 0: sta 59: een
- h tarkka aika, 24 tunnin muoto käsitellään, arvot vaihtelevat 0: sta 23: een, 0 on 12:00 keskiyöllä.
- lahja viittaa kuukauden päivään, esimerkiksi voit määrittää 15, jos haluat suorittaa 15 päivän välein
- Dow tarkoittaa viikonpäivää, se voi olla numeerinen (0–7, missä 0 ja 7 on sunnuntai) tai päivän kolme ensimmäistä kirjainta englanniksi: ma, ti, ke, to, pe, la, su.
- lähettämä määrittää käyttäjän, joka suorittaa komennon, se voi olla pääkäyttäjä tai toinen käyttäjä, kunhan heillä on käyttöoikeudet komentosarjan suorittamiseen.
- komento viittaa komentoon tai komentosarjan absoluuttiseen polkuun suoritettavaksi, esimerkki: /home/usuario/scripts/update.sh, jos se kutsuu komentosarjaa, sen on oltava suoritettava
Muutama esimerkki selitetyistä cron-tehtävistä on selkeä:
15 10 * * * käyttäjä /home/usuario/scripts/update.sh
Se suorittaa päivityksen.sh komentosarjan joka päivä klo 10
15 22 * * * käyttäjä /home/usuario/scripts/update.sh
Se suorittaa päivityksen.sh komentosarjan joka päivä kello 10
00 10 * * 0 root apt-get -y -päivitys Root-käyttäjä
Se suorittaa päivityksen joka sunnuntai klo 10
45 10 * * sun root apt-get -y -päivitys
Root-käyttäjä suorittaa päivityksen joka sunnuntai (su) klo 10
30 7 20 11 * käyttäjä /home/usuario/scripts/update.sh
Käyttäjä suorittaa komentosarjan 20. marraskuuta kello 7
30 7 11 11 auringon käyttäjä /home/usuario/scripts/pastel_con_velitas.sh
11. marraskuuta kello 7 ja sunnuntaina käyttäjä juhlii sysadminiaan (eli minua)
01 * * * * käyttäjä /home/usuario/scripts/molestorecordatorio.sh
Ärsyttävä muistutus joka minuutti joka tunti joka päivä (EI suositella).
Niitä voidaan silti käsitellä erikoisalueet:
30 17 * * 1,2,3,4,5
Klo 5 iltapäivällä joka päivä maanantaista perjantaihin.
00 12 1,15,28 *
Klo 12 jokaisen kuukauden ensimmäisenä, viidentenätoista ja 28. päivänä (ihanteellinen palkanlaskentaan)
Jos tämä on hämmentävää, käsittele kahvat erityiset merkkijonot näiden alueiden määrittelemiseksi.
@reboot Suorita kerran, käynnistyksen yhteydessä
@vuosi kulkee vain kerran vuodessa: 0 0 1 1 *
@vuotta sama kuin @vuotta
@kuukausittain kerran kuukaudessa, ensimmäinen päivä: 0 0 1 * *
@ viikoittain viikoittain viikon ensimmäisen tunnin ensimmäinen minuutti. 0 0 * * 0 ″.
@ päivittäin päivittäin, klo 12 00 0 * * *
@ keskiyö sama kuin @ päivittäin
@ tunti tunnin välein: 0 * * * *
Sen käyttö on hyvin yksinkertaista.
@ tunti käyttäjä /home/user/scripts/molestorecordatorio.sh @kuukausittainen käyttäjä /home/user/scripts/backup.sh @ päivittäin root apt-get update && apt-get -y upgrade
Viimeinen mutta ei vähäisin:
Cronin työnhallinta
crontab-tiedosto
Korvaa olemassa oleva crontab-tiedosto käyttäjän määrittämällä tiedostolla
crontab -e
Muokkaa käyttäjän crontab-tiedostoa, jokainen uusi rivi on uusi crontab-tehtävä.
crontab -l
Luettele kaikki käyttäjän crontab-tehtävät
crontab -d
Poista käyttäjän crontab
crontab -c ohj
Määrittää käyttäjän crontab-hakemiston (sillä on oltava käyttäjän kirjoitus- ja suoritusoikeudet)
crontab -u-käyttäjä
etuliite toisen käyttäjän sivunäkymän käsittelemiseen, esimerkkejä:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u user
Tämä työkalu, kuten monet muutkin, voidaan nähdä syvällisemmin ja yksityiskohtaisemmin:
Uh ... vähän hämmentävää.
* / 30 puuttuu (minuuttikentässä), joka kulkee 30 minuutin välein ...
Juuri tätä aioin kommentoida, kunnes päätin tarkistaa kommentit 😀
Tämä muokkaaja on erittäin tärkeä tieto ja jotain erittäin hyödyllistä.
Hei!
Tällä hetkellä testaan kokoonpanoa 45 minuutin välein.
* / 45 * * * *, ja käsky suoritetaan 45 minuutin välein joka tunti JA joka tunti. Toisin sanoen:
Se toimii klo 3:45, sitten 4:00, 4:45, sitten 5:00, 5:45, 6:00, 6:45 ja niin edelleen.
Minulla on jotain vikaa? Mitä voin tehdä niin, että se tapahtuu vain 45 minuutin välein tai ainakin kerran 45 minuutin välein tunnissa.
Hei!
Tällä hetkellä testaan kokoonpanoa 45 minuutin välein.
* / 45 * * * *, ja käsky suoritetaan 45 minuutin välein joka tunti JA joka tunti. Toisin sanoen:
Se toimii klo 3:45, sitten 4:00, 4:45, sitten 5:00, 5:45, 6:00, 6:45 ja niin edelleen.
Minulla on jotain vikaa? Mitä voin tehdä niin, että se tapahtuu vain 45 minuutin välein tai ainakin kerran 45 minuutin välein tunnissa.
Hei erittäin hyödyllisiä tietoja sen selvittämiseksi, miten cron toimii.
Tavua
varten *
Erinomainen, kiitos kun selvitit kuinka cron toimii .. laitetaan pieni käsi 🙂
Ymmärtääkseni tämä rivi toteutetaan klo 10. Korjaa minut, jos olen väärässä
No siinä sanotaan klo 10:15
15 22 * * * käyttäjä /home/usuario/scripts/update.sh
Hei! erittäin hyvä info.
Jos komentosarja suoritetaan puolen tunnin välein, CronTabiin lisättävä rivi olisi: "30 * * * * root Scrip.sh" Oikea? Kiitos paljon!
Ei. Jos muistan oikein, sinun on lisättävä / 30 * * * * root Scrip.sh.
Eli lisää / ennen 30.
Kippis! Paul.
Hei, pidin viestistäsi, se on hyvin täydellinen, mutta halusin kysyä sinulta jotain.
Minulla on ongelmia tämän komennon kanssa ja sellainen kuin "at".
Haluan suorittaa komentosarjan tiettyyn aikaan ja laittaa
at -f /home/mi_user/Desk/script.sh 18:08 example
ja komentosarjaa ei suoriteta ruudulla, toisin sanoen päätelaitteessa, suoritetaanko se taustalla?
Ja cronin kanssa sama tapahtuu minulle, muokkaan crontab-tiedostoa "crontab -e": llä
lopussa lisätään tämän rivin:
46 19 my_user /home/mi_user/Desk/script.sh
ja se ei tee mitään, se ei näytä käsikirjoitusta.
Ehdotuksia? Paljon kiitoksia ja anteeksi mahdollisista haitoista
Jotta pääte tulee näkyviin, joudut ehkä suorittamaan päätelaitteen ja välittämään komentosarjan parametrina.
Esimerkiksi:
lxterminal -e "my_user /home/my_user/Desk/script.sh"
Käytettävä parametri voi vaihdella käyttämäsi pääteemulaattorin mukaan.
Toivon, että se toimii.
Halata! Paul.
Panos on arvostettu.
10 pistettä !!
salu2!
Paljon kiitoksia, se auttoi minua paljon selventämään joitain asioita, täydelliset kiitokset, lisätietoja tai epäilyksiä varten menen MAN-SIVULLE, toistivat terveiset.
Setä kiitos paljon, olen lukenut ja testannut esimerkkejä. kiitos paljon ... se on hyvin ymmärrettävää. Kippis
Käytin ubuntu Server 12.04.2 LTS: ää ja käytössä olevaa crontab-versiota käyttäjän työluettelon poistamiseen käytetään crontab -r (ja -l, kuten tässä oppaassa sanotaan). Toki se on kysymys versioista.
Toisaalta juoksin kerran vain crontab-sovelluksen ja annoin tällaisen antaa minun luoda oman suoritustiedoston, mutta tätä ei suoritettu. Suoritettava on tiedosto / etc / crontab. ehkä joku käyttää kommenttia.
PS (Etsin lokalilla ja mistä crontab, mutta se palautti vain edellä mainitun osoitteen ja toisen salatun tiedoston, joten jos suoritettu oli / etc / crontab, mutta suoritettaessa crontab -e -komentoa, minun olisi ilmestyy kaikkien määrittelemieni töiden kanssa) missä tämä tiedosto tallennettiin '???? Terveiset. Kirjaudun sisään aina pääkäyttäjällä.
Erinomainen, erittäin hyödyllinen !!!
Hei, haluaisin tehdä tämän ………… «15 10 * * * root ifdown eth0»
toisin sanoen verkkokortti sammuu tietyn ajan kuluttua ... ... hyvin, laitoin sen crontabiin ja se ei toiminut ... ... .. mitä kuuluu?
Saludos y gracias
Sinä unohdit määritellä "mon" otsikon "Lisää tehtäviä crontab" jälkeen
Artikkeli on edelleen mukava, cron on erittäin hyödyllinen.
Kuinka siistiä oli, että hyvä viesti, kysy minulta
Jos haluan seurata tehtävien suorittamisen jättämiä tietueita, mistä voin nähdä ne?
on päättää, että haluan nähdä tämän tiedoston aikaisemmin tehtyjen toimien historian ja haluan nähdä, kuka on muokannut sitä ja päivämäärä
kiitos
Haluan tarkistaa tämän muokkaushistorian
kuinka voin tehdä sen
kiitos
Hyvää huomenta,
Luulen, että olet tehnyt virheen ubuntu-komentosarjassa, olet asettanut ap-get -y -päivityksen apt-get -y -päivityksen sijaan. (Olet jättänyt t: n).
Tervehdys.
Niin on. Kiitos!
Halata! Paul
Haluan tietää, kuinka luoda cron-tiedosto voidaksesi määrittää jokaisen suorituksen ajankohdan, hakemiston jne.
Kiitos, että selvitit toiminnon ja cronin peruskomennot nyt viihdyttämään itseäsi vähän.
Aina kun etsin tietoa mistä tahansa Gnu / Linuxiin liittyvästä aiheesta, käyn ympäri ja löydän 90 prosentissa tapauksista parhaan opetusohjelman tässä upeassa yhteisössä, luulen tästä lähtien aloittavan täällä ja sitten muualla.
terveiset
Kiitos Sander! Halaus! Paul.
dom = kuukauden päivä
dow = viikonpäivä
se on helpompaa, jos olet mukana
Kiitos paljon, erittäin kattava ja hyvin selitetty.
Tämä on sama asia, jonka käyttöjärjestelmän opettajani antoi meille, en muuta mitään, nyt ymmärrän miksi luokka on niin huono. - No, tämä on sama kuin kotitehtävät xD
Arvioitu,
Kysely, voiko tehtävän kestoaikaa rajoittaa?
Esimerkiksi minulla on tehtävä, joka toistuu 5 minuutin välein, toistamisen jälkeen, jos tehtävä on edelleen aktiivinen, tappaa se ja suorita uudelleen.
Kiitos
Marcelo. -
Hei, Marcelo!
Mielestäni olisi parempi, jos ottaisit tämän kysymyksen esille kysymys- ja vastauspalveluumme Kysyä DesdeLinux jotta koko yhteisö voi auttaa sinua ongelmassasi.
Halaus, Pablo.
hyvä viesti.
Mikä on komento terminaalia kohti tehtävien lisäämiseksi crontabiin (kirjoittamatta crontabiin ja lisäämällä ne manuaalisesti 'crontab -e': llä tai korvaamalla crontab toisella crontabilla 'crontab file': llä).
Ajatuksena on luoda ulkoinen komentosarja tehtävien lisäämiseksi crontabiin
kiitos
minusta tuntuu, että voit käyttää 'kaikua' mitä haluat lisätä '| kissa >> 'cronotab-polku (/ etc / cronotab)' «
Kuinka lauseke suoritettaisiin tarkalleen 3 päivän välein
Hei.
Minulla on ongelma cron-työn suorittamisessa.
Suoritan seuraavan tehtävän cronta -e: llä:
01 * * * * juuri /home/user/script/mfile.sh
mutta tehtävää ei suoriteta. Olen tarkistanut, että myfile.sh: llä on käyttöoikeus ja että sen suorittava käyttäjä on root.
Suoritan saman tehtävän tiedostossa / etc / crontab ja palvelun uudelleenkäynnistyksen jälkeen se ei toimi myöskään minulle.
Myfile.sh-sisältö on komento, joka päivittää tietokannan ja jos suoritan sen konsolissa, se toimii.
mitään käsitystä siitä, mikä ongelma voi olla?
Todennäköisesti tietokannan käyttäjällä ei ole kaikkia käyttöoikeuksia ja sinun on ensin vietävä ympäristömuuttujat tietokantamoottoristasi.
Esimerkiksi db2: ssä tämä rivi menisi komentosarjan alkuun
. / home / db2inst1 / sqllib / db2profile
Toinen syy voi olla, että komentosarja vaatii yhteyden tietokantaan, muodosta yhteys tietokantaan komentosarjassa
En tiennyt, että minun oli aloitettava alusta uudelleen, olin taistellut tämän kanssa jonkin aikaa
He tietävät kuinka osoittaa, että tehtävä suoritetaan joka kuukauden lopussa ilmoitettuna aikana. Yksityiskohta on, että en voi saavuttaa kuinka tiedän sen ottavan jokaisen kuukauden viimeisen päivän .. ??? Minun piti kirjoittaa ne yksitellen, mutta kun helmikuun loppu tulee, että se on biciesto, se on minulle monimutkaista.
hyvää päivää!!
Kuinka voin lopettaa prosessin, joka suoritetaan sivuradalla?
käsitellä asiaa * …………
Voisitko auttaa minua? Minun kirjoittama eu tenho um -käsikirjoitus, joka ei toimi, ei crontab! Jб dei kaikki sallitut henkilöt, ei yksityistä erityistä asiakasta tai käyttäjää, joka voi suorittaa sen - eniten mitään ei tapahdu! Haluaisin tietää, voitko auttaa minua, jotkut muut asiat eivät toimi! Vlws
Kuinka laittaisit tehtävän suoritettavaksi joka kuukauden viimeisenä päivänä (päivät: 31-30-28)?
Kuten jo tiedät, su-komentoa käytetään käyttäjän vaihtamiseen konsolissa. Jos käytän komentoa su näin: "käyttäjäsi" vaihtaa käyttäjää mutta ilman "käyttäjän" asetuksia, jos suoritan su nimellä "su - käyttäjä", vaihda käyttäjä lataamalla käyttäjäasetukset. Cron: llä ilmoitan käyttäjän, mutta miten voin ladata tämän käyttäjän asetukset?
Ja jos haluan lopettaa sen?
Hei,
En tiedä mitä teen väärin, mutta noudatan ohjeita, eikä mitään suoriteta. Olen yrittänyt:
59 * * * * / usr / bin / gedit
* * * * * / usr / bin / gedit
* * * * * root / usr / bin / gedit
* * * * * usr / bin / test.sh
* * * * * root usr / bin / test.sh
eikä mitään. Se ei toteuta mitään. Olen käynnistänyt kaiken uudelleen.
kiitos paljon