Övervaka ditt system automatiskt med ’watch’-kommandot
Ibland behöver man upprepade gånger köra ett specifikt kommando eller program för att hålla koll på olika delar av sitt system. Det kan vara allt från pågående processer till diskutrymme eller användarinloggningar. Med Linux-kommandot ’watch’ kan du automatisera dessa kontroller istället för att behöva utföra dem manuellt om och om igen.
Detta kommando låter dig övervaka systemaktiviteter i realtid, som till exempel användarinloggningar, nätverksstatus, minnes- och CPU-användning, diskutrymme och mycket mer. Låt oss utforska hur ’watch’-kommandot används i Linux.
Vad är ’watch’-kommandot?
’watch’-kommandot i Linux är ett verktyg som kör ett specificerat kommando eller program med jämna mellanrum och visar resultatet i terminalen. Detta gör att du kan observera förändringar i utdata i realtid. Det uppdaterar utdata med varje intervall och skriver över den tidigare visningen. Som standard upprepas kommandot varannan sekund och fortsätter tills du manuellt avbryter det med Ctrl + C.
’watch’-kommandots syntax
Syntaxen för ’watch’-kommandot ser ut så här:
watch [alternativ] <kommando>
Det finns flera kommandoradsalternativ du kan använda tillsammans med ’watch’-kommandot. Om du kör ’watch’-kommandot utan några tillägg, kommer det att utföra det angivna kommandot varannan sekund. Exempelvis kommer följande kommando visa resultatet av ’ls’-kommandot:
watch ls -l ~/
Utdata kommer att visa förändringar i kataloglistan om en fil skapas, raderas eller ändrar storlek, och utdata uppdateras varannan sekund.
Kör ett kommando med ett visst tidsintervall
Du har möjlighet att ändra uppdateringsfrekvensen för ’watch’-kommandot. Du kan ställa in kommandot så att det väntar ett visst antal sekunder innan det körs igen. För att ändra tidsintervallet, använd alternativet ’-n’ följt av det önskade intervallet i sekunder.
watch -n <sekunder> <kommando>
Till exempel, för att köra ett kommando var femte sekund, skriv:
watch -n 5 <kommando>
Markera ändringar mellan uppdateringar
’watch’-kommandot skriver över sin utdata vid varje uppdatering. Genom att använda alternativet ’-d’, kan du också få ändringar mellan föregående och den aktuella utdatan markerade.
watch -d <kommando>
Dölj sidhuvudet i ’watch’-kommandots utdata
Som standard visar ’watch’-kommandot en rubrik längst upp i varje utdata. Den innehåller information om uppdateringsintervallet, kommandots namn och systemets aktuella datum och tid. Du kan ta bort den här rubriken från utdatan genom att använda alternativet ’-t’:
watch -t <kommando>
Ljudsignal vid fel
När en Linux-process avslutas, returnerar den en utgångskod. Enligt konventionen är värdet 0 vid lyckat genomförande, och ett annat värde än 0 indikerar ett fel. ’watch’-kommandots ’-b’-alternativ ger ifrån sig ett pipljud om kommandot returnerar en utgångskod som inte är noll.
Antag att du vill övervaka sshd.service och bli meddelad när tjänsten avbryts. Då skulle du kunna använda följande kommando:
watch -b sudo systemctl status sshd.service
Detta kommando kommer att ge ifrån sig ljudsignaler när tjänsten stoppas. Pipet upphör när tjänsten startas igen. För att testa det här, öppna ett separat terminalfönster och stoppa tjänsten. Detta kommer att generera kontinuerliga pip tills du startar tjänsten igen. Observera att du måste ha ’beep’-paketet installerat på ditt system för att denna funktion ska fungera.
Avsluta ’watch’-kommandot när utdata ändras
Du har även möjlighet att instruera ’watch’-kommandot att avsluta när utdata från kommandot ändras. Detta gör du genom att använda alternativet ’-g’. Detta alternativ kan vara mycket användbart när du väntar på att specifika ändringar ska inträffa i utdata.
När utdata ändras, kommer ’watch’-kommandot att avslutas. Du kan kombinera det här med ’echo’-kommandot för att visa ett meddelande på skärmen.
Tänk dig till exempel att du väntar på att en fil ska hamna i en specifik katalog. Följande kommando kommer att övervaka katalogen efter den angivna filen. Så fort filen dyker upp, kommer ’watch’-kommandot att avslutas, och meddelandet ”file arrived” visas på terminalen.
watch -g "ls -l | grep filename" && echo "file arrived"
Ett annat användbart exempel är att få ett meddelande när en specifik användare loggar in på systemet:
watch -g "who | grep username" && echo "username logged in"
Detta kommando kommer att övervaka utdata från ’who’-kommandot, som listar inloggade användare. När användaren loggar in kommer ’watch’-kommandot att avslutas och ett meddelande visas på terminalen.
På liknande sätt kan du instruera ’watch’-kommandot att stoppa en tjänst när vissa ändringar görs i en fil. Kom ihåg att om du använder en kedja av kommandon (’pipe’), måste hela kommandot omges av citattecken.
Övervaka aktiviteter i ditt Linux-system
Om du upptäcker att du utför samma process om och om igen, kan det vara värt att överväga att använda ’watch’-kommandot för att automatisera uppgiften. Det sparar dig från att ständigt behöva skriva in kommandon för att se vilka förändringar som har inträffat.
Du kan också använda ’watch’-kommandot med andra Linux-kommandon för att övervaka systemresurser och aktiviteter, samt spåra ändringar i filer eller kataloger.