Een programma periodiek uitvoeren met het Watch-commando op Linux
Soms moet je herhaaldelijk een commando of een programma uitvoeren om verschillende aspecten van je systeem te controleren, zoals lopende processen, schijfruimtegebruik of gebruikersaanmeldingen. Met het Linux watch commando kun je deze taken automatiseren zonder dat je ze steeds handmatig hoeft uit te voeren.
Met dit commando kun je continu verschillende systeemgebeurtenissen observeren, zoals aanmeldactiviteit van gebruikers, netwerkomstandigheden, processor- en geheugengebruik, beschikbare opslagcapaciteit, enzovoort. Verken de stappen die nodig zijn om het “watch” commando te gebruiken in een Linux besturingssysteem voor uitgebreide bewakingsmogelijkheden.
Wat is de Watch-opdracht?
Met de opdracht “Watch” in Linux kan een aangewezen opdracht of programma regelmatig worden uitgevoerd, waarbij de uitvoer in de terminal wordt weergegeven. Hierdoor kun je eventuele wijzigingen in de uitvoer in realtime volgen, omdat deze continu wordt bijgewerkt en bij elke herhaling de vorige uitvoer vervangt. Standaard wordt het commando elke twee seconden uitgevoerd, tenzij het anders wordt beëindigd door op
Watch Command Syntax
De syntaxis van het watch commando is:
watch options <command>
Het gebruik van het “watch” commando biedt een veelheid aan keuzes voor configuratie via commandoregelparameters. Als het commando “watch” zonder specificaties wordt uitgevoerd, wordt de aangegeven bewerking om de twee seconden uitgevoerd. Ter illustratie: het volgende scherm toont de resultaten van het commando “ls”:
watch ls -l ~/
De presentatie toont de wijzigingen aan de directorylijsten in het geval van het genereren, verwijderen of wijzigen van de afmetingen van een bestand, door de visualisatie elke twee seconden bij te werken.
Voer elke X seconden een opdracht uit met watch
Je hebt de flexibiliteit om de verversingscyclus van de opdracht watch
te wijzigen. Dit komt overeen met het opgeven van een tijdsduur voor de watch
opdracht om inactief te blijven voordat de opdracht opnieuw wordt uitgevoerd. Gebruik de optie -n
met de tijdsperiode in seconden als parameter om het vernieuwingsinterval aan te passen.
watch -n
Om een commando elke vijf seconden herhaaldelijk uit te voeren, kun je de volgende aanpak gebruiken:
watch -n 5 <command>
Highlight Changes Between Updates
Het commando watch
in shell scripting wijzigt de weergave bij elke uitvoering.Door de optie -d
te gebruiken, kun je ook de verschillen tussen de huidige en vorige uitvoer benadrukken.
watch -d
Verberg koptekst in uitvoer van het commando watch
Het standaardgedrag van het commando “watch” is om in elke uitvoer een koptekst weer te geven met informatie over het update-interval, de naam van het commando en de huidige datum en tijd van het systeem. Om deze koptekst uit de uitvoer weg te laten, kun je de optie “-t” gebruiken.
watch -t <command>
Piepsignalen afspelen bij fout
Na voltooiing van een Linux proces, retourneert het meestal een exit-status die vaak wordt beschouwd als een maat voor succes of mislukking. De gangbare praktijk schrijft voor dat een waarde van nul een succesvolle uitvoering betekent, terwijl elke andere waarde een foutindicator is. In de context van de optie -b
van het commando watch wordt deze exit-status gebruikt om een geluidssignaal in de vorm van een pieptoon af te geven wanneer een waarde van nul wordt geretourneerd, waardoor gebruikers worden gewaarschuwd voor mogelijke problemen in hun scriptcommando’s.
Een mogelijke aanpak voor het monitoren van de status van de sshd.service met behulp van systemd en het ontvangen van meldingen in het geval van een onderbreking van de service is door gebruik te maken van het volgende commando:
watch -b sudo systemctl status sshd.service
Om een meldingsmechanisme te implementeren dat gebruik maakt van hoorbare waarschuwingen in de vorm van piepgeluiden via het pakket “beep” voor diensten die zijn gestopt met werken, kan de volgende procedure worden gebruikt. Door dit commando uit te voeren, zal er een reeks continue piepgeluiden uit de luidsprekers komen wanneer de gespecificeerde dienst stopt met werken. Omgekeerd zal het piepgeluid stoppen zodra de service is hersteld. Het is belangrijk op te merken dat deze functionaliteit afhankelijk is van de aanwezigheid van het eerder genoemde “piep”-pakket op het systeem van de gebruiker.
Het watch commando afsluiten bij uitvoerwijziging
Met de vlag -g
kan de uitvoering van een watch commando worden gestopt en de bewerking ervan worden beëindigd bij het detecteren van een wijziging in de resulterende uitvoer, waardoor deze vooral handig is in situaties waarin het monitoren van uitvoerwijzigingen cruciaal is.
Bij wijziging van de uitvoer stopt de uitvoering van het commando watch
. Deze bewerking kan effectief worden gecombineerd met het gebruik van de opdracht echo
voor de presentatie van visuele inhoud op het displayoppervlak.
Stel dat je wacht op een bepaald bestand in een van je mappen. In zo’n geval kun je door het commando uit te voeren de genoemde map continu controleren op de aanwezigheid van het specifieke bestand.Zodra dit is gedetecteerd, stopt de uitvoering van het controlecommando en wordt er een melding van de aankomst van het bestand weergegeven op de terminalinterface.
watch -g "ls -l | grep filename" && echo "file arrived"
Een ander voorbeeld is het ontvangen van een waarschuwing wanneer een bepaald individu toegang krijgt tot je netwerk:
watch -g "who | grep username" && echo "username logged in"
Dit commando houdt toezicht op de uitvoer die wordt gegenereerd door het “who” commando, dat een opsomming geeft van de personen die momenteel verbonden zijn met het systeem. Als een gebruiker zich aanmeldt, stopt de functionaliteit van het “watch”-commando en wordt er een melding weergegeven in de terminalinterface.
Op een vergelijkbare manier is het mogelijk om het “watch” commando te instrueren om de uitvoering van een bepaalde dienst te stoppen wanneer er wijzigingen worden aangebracht in een specifiek bestand. Bij het gebruik van een pijplijn van onderling verbonden commando’s is het echter essentieel om de volledige instructie tussen aanhalingstekens te plaatsen.
Activiteiten in je Linux systeem bekijken
Het “watch” commando kan een praktische oplossing zijn als je vaak identieke taken achter elkaar uitvoert. Door dit commando te gebruiken, hoef je niet steeds commando’s in te voeren om te zien of er wijzigingen zijn aangebracht.
Je kunt de opdracht “watch” naast verschillende Linux-commando’s gebruiken om systeemmiddelen en -taken te overzien en wijzigingen in bestanden of mappen te controleren.