Kaip paleisti arba kartoti „Linux“ komandą kas X sekundžių amžinai


Sistemos administratoriui dažnai reikia pakartotinai paleisti komandą tam tikru laikotarpiu. Dažnai tokias užduotis galima lengvai atlikti naudojant paprastas cron komandas. Daugeliu atvejų tai turėtų veikti, tačiau trumpiausias laikotarpis, per kurį galite paleisti cron komandą, yra kas 1 minutę. Tikėkite ar ne, daugeliu atvejų tai vyksta per lėtai.

Šioje mokymo programoje išmoksite paprastų scenarijų sudarymo metodų, kaip stebėti arba stebėti konkrečią komandą, kuri yra nuolat vykdoma, panaši į viršutinę komandą (nuolat stebėti procesą ir atminties naudojimą) kas 3 sekundes pagal numatytuosius nustatymus.

Mes nesiliausime aptarę priežastis, kodėl taip dažnai reikia vykdyti komandas. Manau, kad kiekvienas turi skirtingas priežastis savo kasdieniame darbe ar net namų kompiuteriuose ir nešiojamuosiuose kompiuteriuose.

1. Naudokite laikrodžio komandą

Žiūrėti yra „Linux“ komanda, leidžianti periodiškai vykdyti komandą arba programą, taip pat rodoma išvestis ekrane. Tai reiškia, kad galėsite laiku pamatyti programos išvestį. Pagal numatytuosius nustatymus laikrodis iš naujo paleidžia komandą/programą kas 2 sekundes. Intervalą galima lengvai pakeisti, kad atitiktų jūsų poreikius.

Stebėkite atminties naudojimą

„Žiūrėti“ yra labai paprasta naudoti, norėdami jį išbandyti, galite iš karto paleisti „Linux“ terminalą ir įvesti šią komandą:

watch free -m

Aukščiau pateikta komanda patikrins jūsų sistemos laisvą atmintį ir kas dvi sekundes atnaujins nemokamos komandos rezultatus.

Kaip matyti iš anksčiau pateiktos išvesties, turite antraštę, kurioje pateikiama informacija apie (iš kairės į dešinę) atnaujinimo intervalą, vykdomą komandą ir dabartinį laiką. Jei norite paslėpti šią antraštę, galite naudoti parinktį -t.

Kitas logiškas klausimas – kaip pakeisti vykdymo intervalą. Tuo tikslu galite naudoti parinktį -n, kuri nurodo intervalą, kuriuo komanda bus vykdoma. Šis intervalas nurodomas sekundėmis. Tarkime, kad norite paleisti failą script.sh kas 10 sekundžių, galite tai padaryti taip:

watch -n 10 script.sh

Atminkite, kad jei paleisite komandą, kaip parodyta anksčiau, turėsite cd į katalogą (sužinokite Sužinokite 15 cd komandų pavyzdžių), kur scenarijus yra arba kitaip nurodykite visą kelią į tą scenarijų.

Kitos naudingos laikrodžio komandos parinktys yra šios:

  1. -b – sukuria pyptelėjimą, jei komandos išėjimas yra ne nulis.
  2. -c – interpretuoja ANSI spalvų sekas.
  3. -d – paryškina komandos išvesties pakeitimus.

Stebėkite prisijungusius vartotojus, veikimo laiką ir apkrovos vidurkį

Tarkime, kad norite stebėti prisijungusius vartotojus, serverio veikimo laiką ir įkelti vidutinę išvestį nuolatine faze kas kelias sekundes, tada naudokite šią komandą, kaip parodyta:

watch uptime

Norėdami išeiti iš komandos, paspauskite CTRL+C.

Čia pagal numatytuosius nustatymus bus paleista komanda 'uptime' ir kas 2 sekundes rodys atnaujintus rezultatus.

Stebėkite kopijavimo komandos eigą

„Linux“ kopijuojant failus iš vienos vietos į kitą naudojant komandą cp, duomenų eiga nerodoma. Norėdami pamatyti kopijuojamų duomenų eigą, galite naudoti žiūrėti komandą kartu su komanda du -s, kad patikrintumėte disko naudojimą realiuoju laiku.

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

Jei manote, kad aukščiau aprašytas procesas yra per sudėtingas, tada siūlau pasirinkti komandą Advance copy, kuri rodo duomenų eigą kopijuojant.

2. Naudokite miego komandą

Miego režimas dažnai naudojamas apvalkalo scenarijų derinimui, tačiau jis taip pat turi daug kitų naudingų tikslų. Pavyzdžiui, kai derinama su kilpomis for arba while, galite gauti gana puikių rezultatų.

Jei nesate naujokas bash scenarijus, čia galite peržiūrėti mūsų vadovą apie bash kilpas.

Jei pirmą kartą girdite apie komandą "miego", ji naudojama tam tikram laikui atidėti. Skriptuose galite jį naudoti norėdami nurodyti scenarijui paleisti 1 komandą, palaukti 10 sekundžių ir tada paleisti 2 komandą.

Naudodami pirmiau nurodytas kilpas galite nurodyti bash paleisti komandą, miegoti N sekundžių ir tada paleisti komandą dar kartą.

Žemiau galite pamatyti abiejų kilpų pavyzdžius:

ciklo pavyzdys

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

Aukščiau pateiktas vienas įdėklas paleis echo komandą ir parodys dabartinę datą, iš viso 10 kartų, 5 sekundes miegant tarp vykdymų.

Čia yra išvesties pavyzdys:

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

Galite pakeisti komandas aidas ir data naudodami savo komandas arba scenarijų ir pakeisti miego intervalą pagal savo poreikius.

Nors ciklo pavyzdys

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

Čia yra išvesties pavyzdys:

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

Aukščiau pateikta komanda bus vykdoma tol, kol naudotojas ją užmuš arba pertrauks. Tai gali būti naudinga, jei reikia paleisti komandą, veikiančią fone, ir nenorite tikėtis cron.

Svarbu: naudojant pirmiau nurodytus metodus, labai rekomenduojama nustatyti pakankamai ilgą intervalą, kad komandai liktų pakankamai laiko, kad ji baigtų vykdyti, prieš kitą vykdymą.

Išvada

Šios pamokos pavyzdžiai yra naudingi, tačiau nėra skirti visiškai pakeisti cron įrankį. Jūs turite nuspręsti, kuris iš jų jums tinka geriau, bet jei turėtume atskirti abiejų metodų naudojimą, sakyčiau taip:

  1. Naudokite cron, kai reikia periodiškai paleisti komandas net po sistemos perkrovimo.
  2. Naudokite metodus, paaiškintus šiame vadove programoms/scenarijams, kurie skirti veikti dabartinėje vartotojo sesijoje.

Kaip visada, jei turite klausimų ar pastabų, nedvejodami pateikite juos toliau pateiktame komentarų skyriuje.