Hvordan kjøre et program med jevne mellomrom ved å bruke Watch-kommandoen på Linux

Noen ganger må du gjentatte ganger kjøre en kommando eller et program for å overvåke ulike aspekter av systemet ditt, som pågående prosesser, diskplassbruk eller brukerpålogginger. Linux-klokkekommandoen lar deg automatisere disse oppgavene uten å måtte kjøre dem manuelt igjen og igjen.

Ved å bruke denne kommandoen kan du overvåke systemaktiviteter i sanntid som brukerpålogginger, nettverksstatus, minne og CPU-bruk, diskplass osv. La oss se hvordan du bruker watch-kommandoen i Linux.

Hva er klokkekommandoen?

Watch Linux-kommandoen kjører en spesifisert kommando eller et program gjentatte ganger, med jevne mellomrom, og viser utdataene i terminalen. Dette lar deg observere endringene i utdataene i sanntid. Den oppdaterer utdataene ved hvert intervall, og overskriver kommandoens forrige utdata. Som standard gjentas kommandoen hvert annet sekund og fortsetter til du stopper den manuelt med Ctrl + C.

Se kommandosyntaks

Syntaksen til klokkekommandoen er:

 watch options <command> 

Det er forskjellige kommandolinjealternativer tilgjengelig for bruk med klokkekommandoen. Hvis du kjører klokkekommandoen uten noen alternativer, vil den kjøre den angitte kommandoen etter annethvert sekund. For eksempel vil følgende vise deg utdataene til ls-kommandoen:

 watch ls -l ~/ 

Utdataene vil vise deg endringene i katalogoppføringen hvis en fil opprettes, slettes eller endres i størrelse, mens utdataene oppdateres hvert annet sekund.

  Hvordan få størrelsen på en fil eller katalog i Linux

Kjør en kommando hvert X. sekund ved å bruke klokken

Du kan endre oppdateringsintervallet til klokkekommandoen. Dette betyr at du kan fortelle klokkekommandoen å vente i x sekunder før du gjentar kommandoen. For å endre oppdateringsintervallet, bruk -n-alternativet etterfulgt av tidsintervallet i sekunder.

 watch -n  

For å kjøre en kommando etter hvert 5. sekund, kjør for eksempel:

 watch -n 5 <command> 

Uthev endringer mellom oppdateringer

Klokkekommandoen overskriver utdata ved hver oppdatering. Ved å bruke -d-alternativet kan du også markere endringene mellom forrige og oppdaterte utdata.

 watch -d 

Skjul topptekst i utdata fra klokkekommandoen

Som standard viser klokkekommandoen en overskrift øverst på hver utgang som inneholder oppdateringsintervallet, kommandonavnet og systemets gjeldende dato og klokkeslett. Du kan fjerne overskriften fra utgangen ved å bruke -t-alternativet:

 watch -t <command> 

Spill av pip ved feil

Når en Linux-prosess er ferdig, returnerer den en utgangskode. Ved konvensjon er verdien 0 ved suksess og ikke-null for å representere en feil. Klokkekommandoens -b-alternativ spiller en pipelyd hvis kommandoen returnerer en utgang som ikke er null.

  Hvordan legge til systeminformasjon til Linux-skrivebordet

La oss si at du vil overvåke sshd.service og bli varslet når tjenesten stopper; du ville brukt:

 watch -b sudo systemctl status sshd.service 

Denne kommandoen vil gi pipelyder når tjenesten stopper. Pipet stopper når tjenesten gjenopptas. For å teste dette, åpne et annet terminalvindu og stopp tjenesten. Dette vil gi konstante pip til du starter tjenesten igjen. For å bruke denne funksjonen må du imidlertid ha pip-pakken installert på systemet ditt.

Avslutt klokkekommandoen ved endring av utdata

Du kan også fortelle klokkekommandoen om å slutte å kjøre og avslutte når utgangen til kommandoen endres. Du kan gjøre dette ved å bruke -g-alternativet. Dette alternativet er veldig nyttig i scenarier når du venter på visse endringer i utdata.

  Hvordan finne IP-adressen til Windows, Linux, Mac og nettsted?

Når utgangen endres, stopper klokkekommandoen. Du kan kombinere denne bruken med ekko-kommandoen for å vise en melding på skjermen.

Tenk for eksempel på et scenario der du venter på at en fil skal ankomme i katalogen din. Følgende kommando vil overvåke katalogen for den angitte filen. Så snart den kommer, vil klokkekommandoen slutte å kjøre, og meldingsfilen ankom vises på terminalen.

 watch -g "ls -l | grep filename" && echo "file arrived" 

Et annet nyttig eksempel er et varsel når en spesifikk bruker logger på systemet ditt:

 watch -g "who | grep username" && echo "username logged in" 

Denne kommandoen vil overvåke utdataene fra who-kommandoen som viser brukerne som er pålogget. Når brukeren logger på, stopper watch-kommandoen og viser en melding på terminalen.

På samme måte kan du fortelle vaktkommandoen å stoppe en tjeneste når det gjøres noen endringer i en fil. Husk at når du bruker en kjede med kommandoer, må du omslutte hele kommandoen i anførselstegn.

Se aktiviteter i Linux-systemet ditt

Hvis du opplever at du gjør den samme prosessen gjentatte ganger, bør du vurdere å bruke klokkekommandoen for å automatisere den. Det sparer deg fra å skrive kommandoene ofte for å se hva som har endret seg.

Du kan også bruke watch-kommandoen med andre Linux-kommandoer for å overvåke systemressurser og aktiviteter, og spore endringer i filer eller kataloger.