Kuinka suorittaa tai toistaa Linux-komento joka toinen sekunti ikuisesti


Järjestelmänvalvojan on usein suoritettava komento toistuvasti tietyn ajanjakson ajan. Usein tällaiset tehtävät voidaan helposti suorittaa yksinkertaisilla cron-komennoilla. Useimmissa tapauksissa tämän pitäisi toimia, mutta lyhin aika, jonka voit suorittaa cron-komennolla, on 1 minuutti. Uskokaa tai älkää, monissa tapauksissa tämä on liian hidasta.

Tässä opetusohjelmassa opit yksinkertaiset komentosarjatekniikat, joilla seurataan tai pidetään silmällä tiettyä komentoa jatkuvasti käynnissä olevassa tilassa, joka on samanlainen kuin yläkomento (seuraa prosessin ja muistin käyttöä jatkuvasti) 3 sekunnin välein oletuksena.

Emme lopeta keskustelemaan syistä, miksi sinun pitäisi suorittaa komentoja usein. Uskon, että jokaisella on erilaiset syyt siihen jokapäiväisessä työssään tai jopa kotona tietokoneissa ja kannettavissa tietokoneissa.

1. Käytä kellokomentoa

Watch on Linux-komento, jonka avulla voit suorittaa komennon tai ohjelman säännöllisesti, ja näyttää myös tuloksen näytöllä. Tämä tarkoittaa, että voit nähdä ohjelman tuotoksen ajoissa. Oletuksena kello suorittaa komennon/ohjelman uudelleen 2 sekunnin välein. Aikaväliä voidaan helposti muuttaa tarpeidesi mukaan.

"Watch" on erittäin helppokäyttöinen, sen testaamiseksi voit käynnistää Linux-päätelaitteen heti ja kirjoittaa seuraavan komennon:

# watch free -m

Yllä oleva komento tarkistaa järjestelmän vapaan muistin ja päivittää vapaan komennon tulokset kahden sekunnin välein.

Kuten yllä olevasta lähdöstä nähdään, sinulla on otsikko, joka näyttää tiedot (vasemmalta oikealle) päivitysvälistä, suoritettavasta komennosta ja nykyisestä ajasta. Jos haluat piilottaa tämän otsikon, voit käyttää -t -vaihtoehtoa.

Seuraava looginen kysymys on - kuinka muuttaa toteutusväliä. Tätä tarkoitusta varten voit käyttää -n -vaihtoehtoa, joka määrittää aikavälin, jolla komento suoritetaan. Tämä väli määritetään sekunteina. Oletetaan, että haluat suorittaa script.sh -tiedoston 10 sekunnin välein, voit tehdä sen näin:

# watch -n 10 script.sh

Huomaa, että jos suoritat komennon kuten yllä on esitetty, sinun on cd siirrettävä hakemistoon (opi Learn 15 cd -komentoesimerkkejä), jossa komentosarja sijaitsee, tai muuten määritettävä koko komentosarjan polku.

Muita hyödyllisiä katselukomennon vaihtoehtoja ovat:

  1. -b - luo äänimerkin, jos komennon poistuminen ei ole nolla.
  2. -c - tulkitsee ANSI-värisekvenssit.
  3. -d - korostaa muutoksia komentotulosteessa.

Oletetaan, että haluat seurata kirjautuneita käyttäjiä, palvelimen käyttöaikaa ja keskimääräistä lähtötehoa jatkuvassa vaiheessa muutaman sekunnin välein, ja käytä sitten seuraavaa komentoa kuvan mukaisesti:

# watch uptime

Poistu komennosta painamalla CTRL + C .

Tässä komento uptime suoritetaan ja päivitetyt tulokset näytetään oletusarvoisesti 2 sekunnin välein.

Kun kopioit tiedostoja yhdestä sijainnista toiseen cp -komennolla, Linuxissa tietojen etenemistä ei näytetä. Jos haluat nähdä kopioitavien tietojen edistymisen, voit käyttää watch komento yhdessä du -s -komennon kanssa levyn käytön tarkistamiseksi reaaliajassa.

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

Jos luulet, että yllä oleva prosessi on liian monimutkainen saavuttaa, suosittelen sinua etsimään Edistynyt kopiointi -komento, joka näyttää tietojen edistymisen kopioinnin aikana.

2. Käytä lepotilakomentoa

Lepotilaa käytetään usein komentosarjojen virheenkorjaukseen, mutta sillä on myös monia muita hyödyllisiä tarkoituksia. Esimerkiksi yhdistettynä for tai while -silmukkoihin saat melko mahtavia tuloksia.

Jos olet uusi bash-komentosarjojen käyttäjä, voit tarkistaa bash-silmukoita käsittelevän oppaan täältä.

Jos tämä on ensimmäinen kerta, kun kuulet "sleep" -komennosta, sitä käytetään viivyttämään jotain tietyn ajan. Komentosarjoissa voit käyttää sitä komentojen kirjoittamiseen komento 1, odottamaan 10 sekuntia ja sitten komennon 2 suorittaminen.

Yllä olevilla silmukoilla voit kertoa bashille komennon suorittamisen, nukkumisen N sekunnin ajan ja sitten komennon suorittamisen uudelleen.

Alla näet esimerkkejä molemmista silmukoista:

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

Yllä oleva yksi linja suorittaa kaikukomennon ja näyttää nykyisen päivämäärän, yhteensä 10 kertaa, 5 sekunnin lepotilassa teloitusten välillä.

Tässä on esimerkkilähtö:

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

Voit muuttaa kaiun ja päivämäärän komentoja omilla komentoillasi tai komentosarjallasi ja muuttaa uniaikaa tarpeidesi mukaan.

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

Tässä on näyte:

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

Yllä oleva komento toimii, kunnes käyttäjä joko tappaa sen tai keskeyttää sen. Se voi olla hyödyllinen, jos sinun on suoritettava taustalla toimiva komento etkä halua luottaa croniin.

Tärkeää: Kun käytät edellä mainittuja menetelmiä, on erittäin suositeltavaa asettaa intervalli riittävän pitkäksi, jotta komennolla olisi riittävästi aikaa suorittaa loppuun ennen seuraavaa suoritusta.

Johtopäätös

Tämän opetusohjelman näytteet ovat hyödyllisiä, mutta niiden ei ole tarkoitus korvata cron-apuohjelmaa kokonaan. Sinun on löydettävä, mikä sopii sinulle paremmin, mutta jos meidän on erotettava molempien tekniikoiden käyttö, sanoisin tämän:

  1. Käytä cronia, kun sinun on suoritettava komentoja säännöllisesti myös järjestelmän uudelleenkäynnistyksen jälkeen.
  2. Käytä tässä opetusohjelmassa selitettyjä menetelmiä ohjelmille/skripteille, jotka on tarkoitettu suoritettavaksi nykyisessä käyttäjäistunnossa.

Kuten aina, jos sinulla on kysyttävää tai kommentteja, älä epäröi lähettää niitä alla olevaan kommenttiosioon.