Master Linux-konsollen: Overvåk system i sanntid med `watch`!

Av og til er det behov for å utføre en bestemt kommando eller et program flere ganger for å holde øye med ulike aspekter ved systemet, for eksempel prosesser som er i gang, diskplassbruk eller pålogginger av brukere. Linux sin `watch`-kommando gir deg muligheten til å automatisere slike oppgaver, slik at du slipper å utføre dem manuelt igjen og igjen.

Ved hjelp av denne kommandoen kan du i sanntid observere systemaktiviteter som brukerpålogginger, status på nettverket, minne- og CPU-bruk, diskplass og mer. La oss utforske hvordan du kan bruke `watch`-kommandoen i Linux.

Hva er `watch`-kommandoen?

Linux-kommandoen `watch` utfører en spesifisert kommando eller et program kontinuerlig, med jevne mellomrom, og presenterer resultatet i terminalen. Dette gir deg mulighet til å se endringer i resultatet i sanntid. Den oppdaterer resultatene ved hvert intervall, og overskriver dermed de tidligere resultatene. Som standard gjentas kommandoen hvert andre sekund, og fortsetter til du manuelt stopper den med Ctrl+C.

Syntaks for `watch`-kommandoen

Syntaksen for `watch`-kommandoen er som følger:

 watch [alternativer] <kommando> 

Det finnes ulike kommandolinjealternativer som kan brukes med `watch`-kommandoen. Hvis du kjører `watch`-kommandoen uten noen alternativer, vil den utføre den angitte kommandoen hvert andre sekund. For eksempel vil følgende kommando vise utdataene fra `ls`-kommandoen:

 watch ls -l ~/ 

Resultatet vil vise endringene i kataloglisten hvis en fil blir opprettet, slettet eller endrer størrelse, og utdataene oppdateres hvert andre sekund.

Kjør en kommando hvert X sekund med `watch`

Du kan justere oppdateringsintervallet for `watch`-kommandoen. Dette gir deg mulighet til å fortelle `watch`-kommandoen å vente et bestemt antall sekunder før den gjentar kommandoen. For å endre oppdateringsintervallet, bruk `-n`-alternativet etterfulgt av tidsintervallet i sekunder.

 watch -n <sekunder> <kommando> 

For eksempel, for å kjøre en kommando hvert 5. sekund, bruker du:

 watch -n 5 <kommando> 

Fremhev endringer mellom oppdateringer

`watch`-kommandoen overskriver resultatet ved hver oppdatering. Ved å bruke `-d`-alternativet kan du i tillegg markere endringer mellom det forrige og det oppdaterte resultatet.

 watch -d <kommando> 

Skjul topptekst i utdata fra `watch`-kommandoen

Som standard viser `watch`-kommandoen en topptekst øverst i hver utgang, som inneholder oppdateringsintervallet, kommandonavnet og systemets gjeldende dato og klokkeslett. Du kan fjerne toppteksten fra utgangen ved å bruke `-t`-alternativet:

 watch -t <kommando> 

Spill av pip ved feil

Når en Linux-prosess er ferdig, returnerer den en utgangskode. I henhold til konvensjonen er verdien 0 ved suksess og en ikke-null verdi ved feil. `watch`-kommandoens `-b`-alternativ spiller en pipelyd dersom kommandoen returnerer en utgang som ikke er null.

La oss si at du vil overvåke `sshd.service` og få beskjed når tjenesten stopper; da ville du brukt:

 watch -b sudo systemctl status sshd.service 

Denne kommandoen vil gi pipelyder når tjenesten stopper. Pippingen vil stoppe når tjenesten er startet igjen. For å teste dette kan du åpne et annet terminalvindu og stoppe tjenesten. Dette vil føre til konstante pipelyder helt til du starter tjenesten igjen. For å bruke denne funksjonen, må du ha pip-pakken installert på systemet ditt.

Avslutt `watch`-kommandoen ved endring i utdata

Du kan også be `watch`-kommandoen om å slutte å kjøre og avslutte når resultatet av kommandoen endres. Dette kan du gjøre ved å bruke `-g`-alternativet. Dette alternativet er veldig nyttig i situasjoner der du venter på visse endringer i utdata.

Når resultatet endres, stopper `watch`-kommandoen. Du kan kombinere dette med `echo`-kommandoen for å vise en melding på skjermen.

Tenk for eksempel på en situasjon der du venter på at en fil skal dukke opp i katalogen din. Følgende kommando vil overvåke katalogen for den angitte filen. Så snart den dukker opp, vil `watch`-kommandoen slutte å kjøre, og meldingen «fil ankom» vil vises i terminalen.

 watch -g "ls -l | grep filnavn" && echo "fil ankom" 

Et annet nyttig eksempel er en varsling når en bestemt bruker logger på systemet ditt:

 watch -g "who | grep brukernavn" && echo "brukernavn logget inn" 

Denne kommandoen vil overvåke resultatet fra `who`-kommandoen, som viser hvilke brukere som er logget på. Når brukeren logger på, vil `watch`-kommandoen stoppe og vise en melding i terminalen.

På samme måte kan du be `watch`-kommandoen om å stoppe en tjeneste når det gjøres endringer i en fil. Husk at når du bruker en kjede av kommandoer, må du omslutte hele kommandoen i anførselstegn.

Se aktiviteter i Linux-systemet ditt

Hvis du oppdager at du utfører samme prosedyre om og om igjen, bør du vurdere å bruke `watch`-kommandoen for å automatisere den. Det sparer deg for å skrive kommandoene ofte for å se hva som har endret seg.

Du kan også bruke `watch`-kommandoen sammen med andre Linux-kommandoer for å overvåke systemressurser og aktiviteter, og følge med på endringer i filer eller kataloger.