Hur man kör ett program med jämna mellanrum med hjälp av Watch-kommandot på Linux

Ibland måste du upprepade gånger köra ett kommando eller ett program för att övervaka olika aspekter av ditt system, som pågående processer, diskutrymmesanvändning eller användarinloggningar. Linux-bevakningskommandot låter dig automatisera dessa uppgifter utan att behöva köra dem manuellt igen och igen.

Med det här kommandot kan du övervaka systemaktiviteter i realtid såsom användarinloggningar, nätverksstatus, minne och CPU-användning, diskutrymme, etc. Låt oss se hur du använder bevakningskommandot i Linux.

Vad är bevakningskommandot?

Watch Linux-kommandot kör ett angivet kommando eller ett program upprepade gånger, med jämna mellanrum, och visar dess utdata i terminalen. Detta låter dig observera ändringarna i utdata i realtid. Den uppdaterar utgången vid varje intervall och skriver över kommandots tidigare utgång. Som standard upprepas kommandot varannan sekund och fortsätter tills du stoppar det manuellt med Ctrl + C.

Titta på kommandosyntax

Syntaxen för bevakningskommandot är:

 watch options <command> 

Det finns olika kommandoradsalternativ som är tillgängliga att använda med klockakommandot. Om du kör bevakningskommandot utan några alternativ kommer det att köra det angivna kommandot varannan sekund. Till exempel kommer följande att visa dig resultatet av kommandot ls:

 watch ls -l ~/ 

Utdata visar dig ändringarna i kataloglistan om en fil skapas, tas bort eller ändras i storlek, samtidigt som utdata uppdateras varannan sekund.

Kör ett kommando var X:e sekund med hjälp av klockan

Du kan ändra uppdateringsintervallet för klockkommandot. Det betyder att du kan säga till klockkommandot att vänta i x sekunder innan du upprepar kommandot. För att ändra uppdateringsintervallet, använd alternativet -n följt av tidsintervallet i sekunder.

 watch -n  

Till exempel, för att köra ett kommando efter var 5:e sekund, kör:

 watch -n 5 <command> 

Markera ändringar mellan uppdateringar

Klockkommandot skriver över dess utdata vid varje uppdatering. Med alternativet -d kan du också markera ändringarna mellan föregående och uppdaterade utdata.

 watch -d 

Dölj sidhuvud i utgången för klockans kommando

Som standard visar bevakningskommandot en rubrik överst på varje utgång som innehåller uppdateringsintervallet, kommandonamnet och systemets aktuella datum och tid. Du kan ta bort rubriken från utgången med alternativet -t:

 watch -t <command> 

Spela pip vid fel

När en Linux-process är klar returnerar den en utgångskod. Enligt konventionen är värdet 0 vid framgång och icke-noll för att representera ett fel. Klockkommandots -b-alternativ spelar ett pipljud om kommandot returnerar en utgång som inte är noll.

Låt oss säga att du vill övervaka sshd.service och få ett meddelande när tjänsten slutar; du skulle använda:

 watch -b sudo systemctl status sshd.service 

Detta kommando kommer att avge pipljud när tjänsten stoppas. Pipet upphör när tjänsten återupptas. För att testa detta, öppna ett annat terminalfönster och stoppa tjänsten. Detta kommer att avge konstanta pip tills du startar tjänsten igen. Men för att använda den här funktionen måste du ha pippaketet installerat på ditt system.

Avsluta klockkommandot vid utgångsändring

Du kan också tala om för klockkommandot att sluta köra och avsluta när kommandots utdata ändras. Du kan göra detta med alternativet -g. Det här alternativet är mycket användbart i scenarier när du väntar på vissa ändringar i utdata.

När utgången ändras stoppas bevakningskommandot. Du kan kombinera denna användning med ekokommandot för att visa ett meddelande på skärmen.

Tänk till exempel på ett scenario där du väntar på att en fil ska komma till din katalog. Följande kommando kommer att övervaka katalogen för den angivna filen. Så snart det anländer kommer bevakningskommandot att sluta köras och meddelandefilen anlände visas på terminalen.

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

Ett annat användbart exempel är ett meddelande när en specifik användare loggar in på ditt system:

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

Detta kommando kommer att övervaka utmatningen av who-kommandot som listar de användare som är inloggade. När användaren loggar in kommer bevakningskommandot att stoppa och visa ett meddelande på terminalen.

På samma sätt kan du säga till bevakningskommandot att stoppa en tjänst när vissa ändringar görs i en fil. Tänk på att när du använder en ledningskedja av kommandon, måste du omge hela kommandot inom citattecken.

Titta på aktiviteter i ditt Linux-system

Om du kommer på att du gör samma process upprepade gånger, överväg att använda klockakommandot för att automatisera det. Det sparar dig från att ofta skriva kommandona för att se vad som har förändrats.

Du kan också använda bevakningskommandot med andra Linux-kommandon för att övervaka systemresurser och aktiviteter och spåra ändringar i filer eller kataloger.