Weboldal keresés

Hogyan futtass vagy ismételj meg egy Linux-parancsot X másodpercenként örökké


A rendszeradminisztrátornak gyakran többször is le kell futtatnia egy parancsot egy bizonyos időszakon belül. Az ilyen feladatok gyakran egyszerűen elvégezhetők egyszerű cron-parancsokkal. A legtöbb esetben ennek működnie kell, de a cron parancs futtatásának legrövidebb időtartama 1 percenként. Akár hiszi, akár nem, ez sok esetben túl lassú.

Ebben az oktatóanyagban megtudhat egy egyszerű szkriptelési technikát, amellyel egy adott parancsot a top parancshoz hasonló, folyamatosan futó állapotban (a folyamat és a memória kihasználtságának folyamatos figyelése) alapértelmezés szerint 3 másodpercenként figyelhet meg vagy tarthat szemmel.

Nem állunk meg az okok megvitatásával, hogy miért van szükség ilyen gyakran parancsok futtatására. Úgy gondolom, hogy mindenkinek más okai vannak ennek a mindennapi munkája során, vagy akár otthoni PC-n és laptopon.

1. Használja az óra parancsot

A Watch egy Linux-parancs, amely lehetővé teszi egy parancs vagy program időszakos végrehajtását, és a képernyőn is megjeleníti a kimenetet. Ez azt jelenti, hogy időben láthatja a program kimenetét. Alapértelmezés szerint az óra 2 másodpercenként újra futtatja a parancsot/programot. Az intervallum könnyen módosítható az Ön igényei szerint.

Figyelje a memóriahasználatot

A „Watch” használata rendkívül egyszerű, teszteléséhez azonnal elindíthat egy Linux terminált, és begépelheti a következő parancsot:

watch free -m

A fenti parancs ellenőrzi a rendszer szabad memóriáját, és két másodpercenként frissíti a szabad parancs eredményét.

Amint a fenti kimenetből látható, van egy fejléce, amely információkat jelenít meg (balról jobbra) a frissítési időközről, a végrehajtott parancsról és a pontos időről. Ha el szeretné rejteni ezt a fejlécet, használja a -t kapcsolót.

A következő logikus kérdés az, hogy hogyan lehet megváltoztatni a végrehajtási intervallumot. Ebből a célból használhatja a -n opciót, amely megadja a parancs végrehajtásának időtartamát. Ez az intervallum másodpercben van megadva. Tegyük fel, hogy 10 másodpercenként szeretné futtatni a script.sh fájlt, ezt a következőképpen teheti meg:

watch -n 10 script.sh

Ne feledje, hogy ha a fenti módon futtatja a parancsot, cd-t kell küldenie abba a könyvtárba (tanuljon meg 15 cd parancspéldákat), ahol a szkript található, vagy más módon adja meg a szkript teljes elérési útját.

A figyelő parancs további hasznos lehetőségei:

  1. -b – sípoló hangot ad, ha a parancs kilépése nem nulla.
  2. -c – ANSI színsorozatokat értelmez.
  3. -d – kiemeli a parancskimenet változásait.

Figyelje a bejelentkezett felhasználókat, az üzemidőt és az átlagos terhelést

Tegyük fel, hogy folyamatosan, néhány másodpercenként szeretné figyelni a bejelentkezett felhasználókat, a szerver üzemidejét és az átlagos terhelési kimenetet, majd használja a következő parancsot az ábrán látható módon:

watch uptime

A parancsból való kilépéshez nyomja meg a CTRL+C billentyűkombinációt.

Itt az 'uptime' parancs lefut, és alapértelmezés szerint 2 másodpercenként megjeleníti a frissített eredményeket.

Figyelje a másolási parancs folyamatát

Linuxban, miközben a fájlokat egyik helyről a másikra másolja a cp paranccsal, az adatok előrehaladása nem jelenik meg. A másolás folyamatának megtekintéséhez használja a watch parancsot a du -s paranccsal együtt a lemezhasználat valós idejű ellenőrzéséhez.

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

Ha úgy gondolja, hogy a fenti folyamat túl bonyolult ahhoz, hogy megvalósítsa, akkor azt javaslom, hogy válassza az Advance copy parancsot, amely az adatok másolás közbeni előrehaladását mutatja.

2. Használja az alvási parancsot

Az alvó üzemmódot gyakran használják a shell szkriptek hibakeresésére, de számos más hasznos célja is van. Például, ha a for vagy a while ciklusokkal kombinálja, elég fantasztikus eredményeket érhet el.

Ha még nem ismeri a bash szkripteket, itt megtekintheti a bash hurkokkal kapcsolatos útmutatónkat.

Ha ez az első alkalom, hogy hallja a "sleep" parancsot, akkor azt arra használják, hogy késleltessen valamit egy meghatározott ideig. A szkriptekben azt használhatja a szkriptnek, hogy futtassa az 1. parancsot, várjon 10 másodpercet, majd futtassa a 2. parancsot.

A fenti ciklusokkal megmondhatja a bash-nak, hogy futtasson egy parancsot, aludjon N másodpercig, majd futtassa újra a parancsot.

Az alábbiakban mindkét hurokra láthat példát:

for loop Példa

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

A fenti bélés futtatja az echo parancsot, és megjeleníti az aktuális dátumot, összesen 10 alkalommal, 5 másodperces alvással a végrehajtások között.

Íme egy minta kimenet:

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

Módosíthatja a visszhang és a dátum parancsokat saját parancsaival vagy szkriptjével, és módosíthatja az alvási intervallumot igényei szerint.

míg hurok Példa

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

Íme a minta kimenet:

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

A fenti parancs addig fut, amíg a felhasználó meg nem öli, vagy meg nem szakítja. Hasznos lehet, ha egy háttérben futó parancsot kell futtatnia, és nem szeretne a cronra számítani.

Fontos: A fenti módszerek használatakor erősen ajánlott elég hosszú intervallumot beállítani ahhoz, hogy a következő végrehajtás előtt elegendő idő álljon rendelkezésre a parancs futásának befejezéséhez.

Következtetés

Az oktatóanyagban található minták hasznosak, de nem helyettesítik teljesen a cron segédprogramot. Rajtad múlik, hogy melyik működik jobban az Ön számára, de ha külön kell választani a két technika használatát, akkor ezt mondanám:

  1. Használja a cron-t, ha rendszeres időközönként parancsokat kell futtatnia, még a rendszer újraindítása után is.
  2. Használja az ebben az oktatóanyagban ismertetett módszereket azokra a programokra/szkriptekre, amelyeket az aktuális felhasználói munkameneten belül kell futtatni.

Mint mindig, ha bármilyen kérdése vagy észrevétele van, ne habozzon benyújtani azokat az alábbi megjegyzés részben.