Kuidas käivitada või korrata Linuxi käsku igavesti iga X sekundi järel


Süsteemiadministraatoril tuleb käsku sageli teatud aja jooksul korduvalt käivitada. Sageli saab selliseid ülesandeid lihtsate cron-käskudega hõlpsasti täita. Enamasti peaks see toimima, kuid lühim ajavahemik, mille saate croni käsku käivitada, on iga 1 minut. Uskuge või mitte, paljudel juhtudel on see liiga aeglane.

Selles õpetuses õpite lihtsaid skriptimismeetodeid, et jälgida või jälgida silma peal käsku pidevalt käimasolevas olekus (nt jälgida protsessi ja mälu kasutamist) vaikimisi iga 3 sekundi järel.

Me ei peatu põhjuste arutamiseks, miks peaksite seda sageli käske käivitama. Usun, et igaühel on selleks igapäevases töös või isegi kodus arvutites ja sülearvutites erinevad põhjused.

1. Kasutage käsku Command

Watch on Linuxi käsk, mis võimaldab teil käsku või programmi perioodiliselt käivitada ja kuvab väljundit ka ekraanil. See tähendab, et saate programmi väljundit õigeaegselt näha. Vaikimisi käivitab kell käsu/programmi iga 2 sekundi järel. Intervalli saab hõlpsasti muuta vastavalt teie vajadustele.

„Watchi“ on äärmiselt lihtne kasutada, selle testimiseks võite kohe Linuxi terminali käivitada ja sisestada järgmise käsu:

# watch free -m

Ülaltoodud käsk kontrollib teie süsteemi vaba mälu ja värskendab tasuta käsu tulemusi iga kahe sekundi järel.

Nagu ülaltoodud väljundist nähtub, on teil päis, mis kuvab teavet (vasakult paremale) värskendamise intervalli, käivitatava käsu ja praeguse aja kohta. Kui soovite selle päise peita, võite kasutada valikut -t .

Järgmine loogiline küsimus on - kuidas muuta täitmise intervalli. Selleks saate kasutada valikut -n , mis määrab käsu täitmise intervalli. See intervall määratakse sekundites. Oletame, et soovite oma faili script.sh käitada iga 10 sekundi järel, saate seda teha järgmiselt.

# watch -n 10 script.sh

Pange tähele, et kui käivitate käsu nagu ülaltoodud, peate cd kataloogi (õppima Learn 15 cd käsunäiteid), kus skript asub, või määrake muul viisil selle skripti täielik tee.

Muud kasulikud käsklusvalikud on:

  1. -b - loob piiksu, kui käsu väljund pole null.
  2. -c - tõlgendab ANSI värvilisi järjestusi.
  3. -d - tõstab esile käsu väljundis tehtud muudatusi.

Oletame, et soovite jälgida sisselogitud kasutajaid, serveri tööaega ja keskmist väljundit pidevalt iga paari sekundi järel, seejärel kasutage järgmist käsku, nagu näidatud:

# watch uptime

Käsust väljumiseks vajutage klahve CTRL + C .

Siin käivitatakse käsk uptime ja kuvatakse värskendatud tulemused vaikimisi iga 2 sekundi järel.

Linuxis failide kopeerimisel ühest asukohast teise käsuga cp ei kuvata andmete edenemist. Kopeeritavate andmete edenemise nägemiseks võite kasutada watch käsk koos du -s käsuga ketta kasutamise reaalajas kontrollimiseks.

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

Kui arvate, et ülaltoodud protsess on selle saavutamiseks liiga keeruline, soovitan teil kasutada käsku Eelnev kopeerimine, mis näitab andmete edenemist kopeerimise ajal.

2. Kasutage unekäsku

Unerežiimi kasutatakse sageli shelliskriptide silumiseks, kuid sellel on ka palju muid kasulikke eesmärke. Näiteks kui kombineerida tsüklitega for või while , võite saada päris vingeid tulemusi.

Kui te olete bashi skriptimise uus kasutaja, saate siit lugeda meie juhendit bashi silmuste kohta.

Juhul kui kuulete käsu \"sleep \" kohta esimest korda, kasutatakse seda millegi kindlaksmääratud ajaks viivitamiseks. Skriptides saate selle abil öelda skriptile käsu 1 käivitamise, 10 sekundi ootamise ja seejärel käsu 2 käivitamise.

Ülaltoodud tsüklite abil saate öelda bashile käsu käivitamise, magama N sekundit ja seejärel käsu uuesti käivitama.

Allpool näete mõlema silmuse näiteid:

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

Ülalolev üks vooder käivitab kaja käsu ja kuvab praeguse kuupäeva, kokku 10 korda, 5 sekundi unega hukkamiste vahel.

Siin on näidisväljund:

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

Kaja ja kuupäeva käske saate muuta oma käskude või skripti abil ja muuta uneaega vastavalt oma vajadustele.

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

Siin on näidise väljund:

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

Ülaltoodud käsk töötab seni, kuni kasutaja selle kas tapab või katkestab. See võib olla kasulik, kui peate käivitama taustal töötava käsu ja te ei soovi cronile loota.

Tähtis: Ülaltoodud meetodite kasutamisel on tungivalt soovitatav määrata intervall piisavalt pikk, et anda käsule enne järgmise käivitamist piisavalt aega käitamise lõpetamiseks.

Järeldus

Selle õpetuse näidised on kasulikud, kuid pole mõeldud croni utiliidi täielikuks asendamiseks. Teie otsustada on, milline neist teie jaoks paremini sobib, kuid kui peame eraldama mõlema tehnika kasutamise, ütleksin nii:

  1. Kasutage croni, kui peate käske perioodiliselt käivitama ka pärast süsteemi taaskäivitamist.
  2. Kasutage selles õpetuses kirjeldatud meetodeid programmide/skriptide jaoks, mis on mõeldud jooksma praeguse kasutaja seansi jooksul.

Nagu alati, kui teil on küsimusi või kommentaare, ärge kartke neid esitada allpool olevas kommentaaride osas.