Hvernig á að keyra eða endurtaka Linux skipun á X sekúndna fresti að eilífu


Kerfisstjóri þarf oft að keyra skipun ítrekað á ákveðnum tíma. Oft er auðvelt að klára slík verkefni með einföldum cron-skipunum. Í flestum tilfellum ætti þetta að virka, en stysti tíminn sem þú getur keyrt cron skipun er á 1 mínútu fresti. Trúðu það eða ekki, í mörgum tilfellum er þetta of hægt.

Í þessari kennslu muntu læra einfalda forskriftartækni til að fylgjast með eða hafa auga með tiltekinni skipun í stöðugri keyrslu svipaðri toppskipun (fylgstu stöðugt með ferlinu og minnisnotkun) sjálfgefið á 3 sekúndna fresti.

Við munum ekki hætta að ræða ástæðurnar fyrir því að þú þyrftir að keyra skipanir svona oft. Ég tel að allir hafi mismunandi ástæður fyrir því í daglegu starfi sínu eða jafnvel heima í tölvum og fartölvum.

1. Notaðu Watch Command

Watch er Linux skipun sem gerir þér kleift að framkvæma skipun eða forrit reglulega og sýnir þér einnig úttak á skjánum. Þetta þýðir að þú munt geta séð úttak forritsins í tíma. Sjálfgefið er að úrið keyrir skipunina/forritið aftur á 2 sekúndna fresti. Auðvelt er að breyta bilinu til að mæta þörfum þínum.

„Horfa“ er mjög auðvelt í notkun, til að prófa það geturðu kveikt strax á Linux flugstöð og slegið inn eftirfarandi skipun:

# watch free -m

Ofangreind skipun mun athuga laust minni kerfisins og uppfæra niðurstöður ókeypis skipunarinnar á tveggja sekúndna fresti.

Eins og sést á úttakinu hér að ofan ertu með haus sem sýnir upplýsingar um (frá vinstri til hægri) uppfærslubili, skipun sem er í gangi og núverandi tíma. Ef þú vilt fela þennan haus geturðu notað -t valkostinn.

Næsta rökrétta spurningin er - hvernig á að breyta framkvæmdarbilinu. Í því skyni geturðu notað -n valmöguleikann, sem tilgreinir það bil sem skipunin verður keyrð með. Þetta bil er tilgreint í sekúndum. Svo segjum að þú viljir keyra script.sh skrána þína á 10 sekúndna fresti, þú getur gert það svona:

# watch -n 10 script.sh

Athugaðu að ef þú keyrir skipunina eins og sýnt er hér að ofan þarftu að cd í möppuna (lærðu Learn 15 cd Command Dæmi) þar sem skriftuna er staðsett eða á annan hátt tilgreina alla slóðina að þeirri skriftu.

Aðrir gagnlegir valkostir úr skipuninni eru:

  1. -b – býr til píp ef útgangur skipunarinnar er ekki núll.
  2. -c – Túlkar ANSI litaraðir.
  3. -d – undirstrikar breytingarnar á skipunarúttakinu.

Segjum að þú viljir fylgjast með innskráðum notendum, spennutíma netþjóns og hlaða meðaltal framleiðsla í stöðugum fasa á nokkurra sekúndna fresti, notaðu síðan eftirfarandi skipun eins og sýnt er:

# watch uptime

Til að hætta í skipuninni, ýttu á CTRL+C.

Hér mun skipunin uptime keyra og birta uppfærðar niðurstöður á 2 sekúndna fresti sjálfgefið.

Í Linux, meðan þú afritar skrár frá einum stað til annars með cp skipuninni, er framvinda gagna ekki sýnd, til að sjá framvindu gagna sem verið er að afrita geturðu notað watch > skipun ásamt du -s skipun til að athuga disknotkun í rauntíma.

# cp ubuntu-15.10-desktop-amd64.iso /home/tecmint/ &
# watch -n 0.1 du -s /home/tecmint/ubuntu-15.10-desktop-amd64.iso 

Ef þú heldur að ferlið hér að ofan sé of flókið til að ná fram, þá legg ég til að þú farir í Advance copy command, sem sýnir framvindu gagna við afritun.

2. Notaðu sleep Command

Svefn er oft notaður til að kemba skeljaforskriftir, en hann hefur einnig marga aðra gagnlega tilgangi. Til dæmis, þegar það er sameinað for eða while lykkjur, geturðu fengið ansi æðislegar niðurstöður.

Ef þú ert nýr í bash scripting geturðu skoðað leiðbeiningar okkar um bash lykkjur hér.

Ef þetta er í fyrsta skipti sem þú heyrir um skipunina \sleep\, er hún notuð til að tefja eitthvað um tiltekinn tíma. Í forskriftum geturðu notað það til að segja handritinu þínu að keyra skipun 1, bíða í 10 sekúndur og keyra síðan skipun 2.

Með ofangreindum lykkjum geturðu sagt bash að keyra skipun, sofa í N magn af sekúndum og keyra síðan skipunina aftur.

Hér að neðan má sjá dæmi um báðar lykkjur:

# for i in {1..10}; do echo -n "This is a test in loop $i "; date ; sleep 5; done

Eina línan hér að ofan mun keyra bergmálsskipunina og sýna núverandi dagsetningu, samtals 10 sinnum, með 5 sekúndna svefni á milli framkvæmda.

Hér er sýnishorn úttak:

This is a test in loop 1 Wed Feb 17 20:49:47 EET 2016
This is a test in loop 2 Wed Feb 17 20:49:52 EET 2016
This is a test in loop 3 Wed Feb 17 20:49:57 EET 2016
This is a test in loop 4 Wed Feb 17 20:50:02 EET 2016
This is a test in loop 5 Wed Feb 17 20:50:07 EET 2016
This is a test in loop 6 Wed Feb 17 20:50:12 EET 2016
This is a test in loop 7 Wed Feb 17 20:50:17 EET 2016
This is a test in loop 8 Wed Feb 17 20:50:22 EET 2016
This is a test in loop 9 Wed Feb 17 20:50:27 EET 2016
This is a test in loop 10 Wed Feb 17 20:50:32 EET 2016

Þú getur breytt bergmáls- og dagsetningarskipunum með þínum eigin skipunum eða handriti og breytt svefnbilinu eftir þínum þörfum.

# while true; do echo -n "This is a test of while loop";date ; sleep 5; done

Hér er sýnishorn úttak:

This is a test of while loopWed Feb 17 20:52:32 EET 2016
This is a test of while loopWed Feb 17 20:52:37 EET 2016
This is a test of while loopWed Feb 17 20:52:42 EET 2016
This is a test of while loopWed Feb 17 20:52:47 EET 2016
This is a test of while loopWed Feb 17 20:52:52 EET 2016
This is a test of while loopWed Feb 17 20:52:57 EET 2016

Ofangreind skipun mun keyra þar til hún er annað hvort drepin eða trufluð af notandanum. Það getur komið sér vel ef þú þarft að keyra skipun sem keyrir í bakgrunni og þú vilt ekki treysta á cron.

Mikilvægt: Þegar ofangreindar aðferðir eru notaðar er mjög mælt með því að stilla bilið nógu langt til að skipunin gefi nægan tíma til að klára keyrsluna, áður en næsta framkvæmd er framkvæmd.

Niðurstaða

Sýnishornin í þessari kennslu eru gagnleg, en er ekki ætlað að koma algjörlega í stað cron tólsins. Það er undir þér komið að finna hvor þeirra virkar betur fyrir þig, en ef við þurfum að aðskilja notkun beggja aðferða, myndi ég segja þetta:

  1. Notaðu cron þegar þú þarft að keyra skipanir reglulega, jafnvel eftir að kerfið er endurræst.
  2. Notaðu aðferðirnar sem útskýrðar eru í þessari kennslu fyrir forrit/forskriftir sem eiga að keyra í núverandi notendalotu.

Eins og alltaf ef þú hefur einhverjar spurningar eða athugasemdir skaltu ekki hika við að senda þær inn í athugasemdahlutanum hér að neðan.