Crontab - Če imate trenutno spletno mesto, ki je zelo težko, boste morda iskali določene procese, kot so obogatitev podatkov ali ustvarjanje sličic v ozadju, ne da bi posegali v uporabniški vmesnik. No, Linux crontab ima dober program, ki naredi točno to: Cron.

Uvod v Cron

Kaj je torej ta program? Cron je kategoriziran kot demon, ki lahko izvaja načrtovane ukaze. Samodejno se zažene, ko vnesete ravni za zagon več uporabnikov, od /etc/init.d. Išče območje tuljave na / var / spool / cron / crontabs za datoteke crontab, poimenovane po računih v / etc / passwd. Za dostop do crontabov v tem imeniku morate namesto njih neposredno uporabiti ukaz crontab. Cron lahko prebere tudi nekoliko drugačno obliko / etc / crontab, pa tudi datoteke v /etc/cron.d.

Ko je Cron konfiguriran, se zbudi vsako minuto, pregleda shranjene linux krontabe in preveri, ali je mogoče kaj izvesti. Če se izvede ukaz in ustvari izhod, se izhod nato pošlje lastniku crontaba ali uporabniku v spremenljivki MAILTO v crontabu. Otroške kopije krona, ki vodi te procese, so poimenovane z velikimi črkami, kar boste videli v izhodih ps in syslog.

Cron prav tako vsako minuto preveri spremembe trenutnega časa imenika spool. Če pride do sprememb, nato preuči modtime vseh linuxovih krontabov in ponovno naloži tiste, ki so se spremenile. Kot rezultat tega, cron ni treba znova zagnati, ko se spremeni datoteka crontab.

Ko se ura spremeni za tri ure ali manj, obstajajo posebni premisleki, kot sta na začetku in na koncu dnevnega časa. Če se čas premakne naprej, bodo opravila, ki jih je mogoče izvesti v preskočenem času, spremenjena, da se začnejo kmalu po spremembi. Na drugem koncu, če se čas premakne nazaj, se opravila, ki padejo v ponavljajoč se čas, ne bodo ponovno zagnala.

Prizadenejo samo opravila, ki se izvajajo v določenem času in ne urno, ali tista, ki so v specifikatorju minute / ure označena s »*«. Naloge, določene z divjimi avtomobili, se takoj izvajajo glede na nov čas. V primeru, da se ura spreminja več kot tri ure, se takoj uporabi nov čas.

V Red hat in Debian-ju cron obravnava datoteke cron.d kot razširitve na datoteko linux crontab, saj sledijo posebni obliki datoteke, kar pomeni, da vključujejo uporabniško polje. Cilj te funkcije je omogočiti pakete, ki zahtevajo natančnejši nadzor razporeda kot dnevni, mesečni ali tedenski imeniki. Takšne datoteke bi morale biti idealno poimenovane po njihovih dobavnih paketih. Datoteke morajo biti v skladu s konvencijo o poimenovanju, ki se uporablja za tekaške dele, saj morajo biti sestavljene izključno iz velikih in malih črk, številk, vezajev in podčrtajev. Datoteke v imeniku cron.d spremljajo spremembe, tako kot imenik crontab linux. Za ukaze, kot je / bin / ls, obvezno uporabite absolutna imena poti, da pokličete pravi ukaz.

Uvod v Linux Crontab

Zdaj, ko poznate vhodne in zunanje strani crona, poglejmo natančno linux crontab, ki je program za namestitev, odstranjevanje ali naštevanje tabel za pogon samega demona. Vsak uporabnik ima lahko lastno linux krontab in datoteke so na voljo v imeniku crontabs, vendar niso namenjene neposrednemu urejanju.

Vsak ukaz, dodeljen v linux krontabu uporabnika, se izvede kot uporabnik. Zavihki, vodilni presledki in prazne vrstice so običajno prezrti. Vrstice, ki imajo hash-znak kot prvi znak brez presledka, se prezrejo, ker se obravnavajo kot komentarji. Vredno je omeniti, da komentarji niso dovoljeni v istih vrsticah ukazov cron, saj se bodo brali kot del ukaza. Na podobno opombo tudi komentarji niso dovoljeni v vrsticah z nastavitvami spremenljivke okolja.

V linux crontabu aktivna vrstica z nastavitvijo ukaza cron ali spremenljivke okolja, ki je v obliki "name = vrednost", kjer se lahko po potrebi dodajo presledki okoli znaka enako. Vsi nadaljnji ne-vodilni presledki so del vrednosti imena. Vrednostni niz bi lahko postavili v enojne ali dvojne ujemajoče se nareke za ohranjanje slednjih ali vodilnih praznih. Ni razčlenjen za zamenjave okolja, zato boste morda ugotovili, da vrstice, kot je "PATH = $ HOME / bin: $ PATH", ne bodo delovale po pričakovanjih.

Številne okoljske nastavitve samodejno nastavi cron, kot sta HOME in LOGNAME nastavljena iz vrstice passwd za uporabnika in SHELL bo nastavljena na / bin / sh in PATH nastavljena na / usr / bin: / bin. PATH, SHELL in HOME lahko nadomestite z nastavitvami crontaba. LOGNAME sicer ni mogoče spremeniti, ker je uporabnik, od katerega se opravilo izvaja. V sistemih BSD lahko to spremenljivko imenujemo USER, v tem primeru bo nastavljen tudi USER.

Če je pošiljanje pošte del ukazov, ki se izvajajo v linux crontabu, bo cron pogledal tudi MAILTO. Če je spremenljivka definirana in je prazna, se poštnemu sporočilu pošlje imenovani uporabnik. Če pa je prazna, se ne pošlje nobene pošte in se namesto tega pošlje lastniku linux crontab-ja. Če je na voljo datoteka cron.allow, morate za uporabo tega ukaza biti navedeni v njej. Če ta datoteka ne obstaja, vendar obstaja datoteka cron.deny, jo morate odstraniti iz te datoteke, če želite uporabiti ukaz. Če nobena datoteka ne obstaja, bo ukaz lahko uporabil le super uporabnik, odvisno od parametrov, ki so odvisni od mesta. Vsi uporabniki bodo lahko uporabljali ukaz, kar velja za standardne sisteme Debian.

Če je možnost –u na voljo, poda uporabniško ime, katerega linux crontab zahteva nastavitev. Če ni dano, potem crontab pregleda crontab uporabnika, ki izvrši ukaz. Pomembno je, da to možnost uporabljate vedno zaradi varnosti med vožnjo znotraj su, saj lahko linux crontab zmede su. Možnost -l je na voljo, da se trenutni krontab prikaže na standardnem izhodu, medtem ko možnost -r odstrani trenutni krontab. Ukaz -e se uporablja za urejanje trenutne linux lrontab s pomočjo urejevalcev, ki jih določijo spremenljivke okolja EDITOR ali VISUAL. Ne morete uporabiti nobenega urejevalnika, ki prekine povezavo in ponovno ustvari datoteko; potrebujete urejevalnik, ki datoteko ureja na svojem mestu. Po izhodu iz urejevalnika bo nastavljena linux crontab samodejno nameščena.

Modul pam_env podpira tudi cron v sistemu Debian GNU / Linux, naloži okolje, kot je določeno v datoteki modula. Vendar je treba opozoriti, da nastavitev PAM ne nadomešča zgoraj omenjenih nastavitev ali nastavitev datoteke crontab. Če želite, da se PATH razlikuje od mesta zabojnika, ga morate nastaviti v datoteki crontab. Cron bo privzeto poslal sporočila z uporabo vrste vsebine 'text / plain' z nastavljenim parametrom znakov na kodni niz / zemljevid znakov v lokalu, kjer se je zagon kron, to je privzeti sistemski jezik brez nastavljene spremenljivke okolja ali lokacijo, ki jo nastavite spremenljivke. Za kodo izhoda poštnega sporočila lahko dodate svoje kodiranje znakov tako, da nastavite spremenljivki 'Content_Transfer_Encoding' in 'Content_Type' v kronetah, da se ujemata z naslovi e-poštnih imen.

Priporočeni tečaji

  • Spletni tečaj R Anova tehnike
  • Certificiranje usposabljanja v AngularJS
  • ISTQB certifikacijski tečaj 1. stopnje
  • Usposabljanje za certificiranje iz testov programske opreme

Delo na Crontabu

Do ukaza crontab, ki ga najdemo v operacijskih sistemih, podobnih Unixu in Unixu, je možno dostopati prek terminala. Če si želite ogledati, kaj trenutno deluje, odprite terminal v sistemu in zaženite naslednji ukaz:

$ sudo crontab -l

Za urejanje seznamov opravil crontab lahko uporabite naslednji ukaz:

$ sudo crontab -e

Ta ukaz odpre privzeti urejevalnik v vašem sistemu, ki je lahko pico ali vio, da spremenite krontab. Če želite opravilo crontab shraniti v datoteko crontab, ga shranite in zapustite urejevalnik. Naloge v Crontabu ali kronjo lahko napišete tako:

* * * * * /bin/execute/this/script.sh

V zgornjem ukazu je pet zvezdic, pri čemer vsaka predstavlja različne dele datumov za načrtovanje opravila. Tukaj so:

  1. Minuta, ki sega od nič do 59
  2. Ura, od nič do 23
  3. Dan v mesecu, ki se giblje od enega do 31
  4. Mesec, ki sega od enega do 12
  5. Dan v tednu, ki se giblje od nič do šestih, nič pa pomeni nedelja

Zgornji seznam je podan po vrstnem redu, zato morate najprej določiti minuto, ki ji sledi ura, dan v mesecu, mesec in dan v tednu. Zvezdico lahko obdržite, če nobenega od polj ne želite določiti, vendar je pomembno upoštevati, da simbol pomeni "vsako". Če pustite vseh pet polj nedefiniranih z zvezdicami nedotaknjenimi, to pomeni vsako minuto vsako uro, vsak dan v tednu in vsak mesec.

Zdaj pa predpostavimo, da želite v nedeljo vsak popoldan izvesti skript, tukaj je to:

0 12 * * 0 /bin/execute/this/script.sh

Zdaj se skript izvaja, ko sistemska ura vsako nedeljo, vsak teden v mesecu, doseže 1200 ur. Če želite scenarij izvesti vsak delovni dan ob 12. uri, je napisano naslednje:

0 12 * * 1-5 /bin/execute/this/script.sh

Cron izvrši ukaze, ko se polja leta, meseca, ure in minute ujemajo s trenutnim časom ali ko se vsaj dan meseca in leta ujemata s trenutnim časom. Polje je lahko označeno z zvezdico, ki označuje "prvi-zadnji". Območja števila so dovoljena, pri čemer sta območja dve številki, ki sta ločeni z vezajem. Specifični razpon je vključujoč, zato razpon 8-11 za 'ure' določa izvedbo ob osmi, deveti, deseti in enajsti uri. Podprti so tudi seznami, pri čemer je vsaka številka ločena z vejicami, na primer „1, 2, 8, 9“. Lahko tudi mešate in ujemate, tako da bi lahko bilo '1, 2, 8-11'.

Vrednosti korakov lahko uporabite v povezavi z razponi, z '/' za obsegom, ki določa preskok vrednosti številke skozi obseg. Na primer, "0-11 / 2" v polju ure določa izvedbo ukazov vsako drugo uro, kar bi bilo zapisano kot seznam: "0, 2, 4, 6, 8, 10". Po zvezdici je dovoljen korak, na primer '* / 2', ki označuje ukaz, ki ga je treba izvesti vsaki dve uri. Za polja dan in mesec lahko uporabite prve tri črke tega dne ali meseca in zadeva ni pomembna. Vendar seznami in obsegi imen niso podprti. Dan izvršitve je mogoče določiti na dveh poljih: dan v tednu in dan v mesecu. Če sta obe polji omejeni, se ukaz požene, kadar se poljubno polje ujema.

Preostali del vrstice je polje "šesto", ki določa ukaz, ki ga je treba zagnati. Del ukazne vrstice prevzame do nove vrstice ali do% znaka. Izvaja ga sh ali določena lupina v spremenljivki SHELL datoteke crontab. Ukaz% bo spremenjen v znake nove vrstice, razen če so umaknjeni s poševno črto '\'. Vsi podatki po prvem znaku% se pošljejo kot standardni vnos ukaza. Ene ukazne vrstice ne morete razdeliti na več vrstic.

Triki za načrtovanje na Crontabu

Oblikovanje se lahko navadi, vendar je nekaj trikov, ki vam bodo pomagali. Če želite vsakih deset minut zagnati kron, lahko to napišete tako:

0, 10, 20, 30, 40, 50 * * * * /bin/execute/this/script.sh

Lahko pa napišete tako, kar je lažje:

* / 10 * * * * /bin/execute/this/script.sh

Imate tudi posebne besede, ki jih lahko dodate za prvo minuto polje namesto številke, kot je:

  • @reboot: to bi skript zagnalo enkrat ob zagonu sistema
  • @ letno: ukaz zaženite enkrat letno (alternativna oblika bi bila "0 0 1 1 *")
  • @annoally: alternativa letni ključni besedi
  • @mesečno: ukaz zaženite enkrat mesečno ("0 0 1 * *")
  • @weekly: teči enkrat tedensko ("0 0 * * 0")
  • @daily: teči enkrat tedensko ("0 0 * * *")
  • @midnight: alternativa dnevni ključni besedi
  • @hurly: teči vsako uro ("0 * * * *")

Shranjevanje izhoda

Cron privzeto shrani izhod opravila v uporabniški nabiralnik ali root. Izhod pa lahko poenostavite in predstavite tako, da ga shranite v ločeno datoteko dnevnika. Takole naredite:

* / 10 * * * * /bin/execute/this/script.sh >> /var/log/script_output.log 2> & 1

Linux je sposoben poročanja na različnih ravneh. Imate standardne napake STDERR in standardni izhod STDOUT, označene kot 2 in 1. Naslednja izjava pravi, da shranite STDERR in STDOUT, da ustvarite en sam podatkovni tok sporočil in napak:

2> & 1

Tako smo definirali izhodni tok, zdaj mu moramo dati cilj. '>' Prepiše datoteko in '>>' jo doda. Za dodajanje, ki je vedno varnejše, lahko uporabite naslednji ukaz:

>> /var/log/script_output.log

Zaključek

Kot vidite, vam cron omogoča, da nastavite naloge za samodejni zagon v rednih intervalih v ozadju. To omogoča samodejno ustvarjanje varnostnih kopij, načrtovanje posodobitev, sinhronizacijo datotek in še veliko več. Vse to in še več lahko storite s crontabom.

Priporočeni članki: -

Tukaj je nekaj člankov, ki vam bodo pomagali do podrobnosti o Linux Crontabu, zato pojdite po povezavi.

  1. Linux Intervju Vprašanja in odgovori | Uporabna in najbolj zastavljena
  2. Kariera v Linuxu
  3. Najboljših 10 uporabnih Linuxovih aplikacij za sistemske skrbnike
  4. Linux proti Windows 10