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.