Tutoriel Linux

Watch under Linux: volg een commando zonder het handmatig opnieuw uit te voeren.

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Je start opnieuw op df -h, ss -s Of systemctl --failed elke paar seconden om te zien of een waarde verandert. Het commando horloge Het automatiseert deze observatie in de terminal: het voert hetzelfde commando met regelmatige tussenpozen uit, vervangt de vorige weergave en kan markeren wat er verandert.

Ik gebruik het om een ​​proces, schijfgebruik of de status van een service te monitoren tijdens een korte interventie. Er is echter één belangrijk punt om in gedachten te houden: horloge Het herhaalt in feite het commando. Een trage, kostbare of destructieve instructie wordt daarom herhaald totdat je stopt.

Tux controleert op regelmatige intervallen wijzigingen aan een Linux-server.
Watch herhaalt een commando met regelmatige tussenpozen en markeert alle waargenomen wijzigingen.

Controleer of het horloge beschikbaar is.

horloge onderdeel van het pakket procps Of procps-ng afhankelijk van de distributie. Controleer eerst of het aanwezig is en welke versie het betreft:

commando -v kijken
bekijk --versie
kijk --help

Als de opdracht ontbreekt, installeer dan het bijbehorende pakket:

sudo apt install procps
sudo dnf install procps-ng
sudo pacman -S procps-ng

De beschikbare opties kunnen enigszins variëren, afhankelijk van de versie van procps-ng. Zie de manpagina voor meer informatie. horloge blijft de referentie voor het controleren van het gedrag dat op uw machine is geïnstalleerd.

Vernieuw een opdracht met het gekozen interval.

Zonder opties, horloge Het commando wordt elke twee seconden opnieuw uitgevoerd. Dit voorbeeld bewaakt de mountpoint-ruimte. /srv/data :

watch 'df -h /srv/data'

De header toont het interval, de opdracht en het tijdstip van de laatste vernieuwing. De uitvoer wordt bij elke iteratie vervangen; deze wordt niet aan het scherm toegevoegd zoals in een logbestand.

Gebruik -N om het interval in seconden te kiezen. Hier wordt de opdracht elke vijf seconden herhaald:

watch -n 5 'df -h /srv/data'

Pas de frequentie aan de kosten van de opdracht aan. Eén seconde is geschikt voor een lichte, lokale teller. Voor een netwerkverzoek, een API, trage opslag of een opdracht die door veel bestanden loopt, kies je voor vijf, tien of dertig seconden. Controleer eerst de duur zonder horloge :

tijd df -h /srv/data

De optie -P Vereist een nauwkeurigere timing. Combineer het niet met een commando dat trager is dan het interval: sommige versies kunnen snel meerdere commando’s achter elkaar uitvoeren om de verloren tijd in te halen.

Benadruk de veranderingen in plaats van ze visueel te vergelijken.

De optie -D Het benadrukt de verschillen tussen twee opeenvolgende weergaven. Het is handig voor het bijhouden van verbindingen, een proceswachtrij of systeemtellers:

watch -d -n 1 'ss -s'
watch -d -n 2 'ps -eo pid,pcpu,pmem,comm --sort=-pcpu | head -n 12'
watch -d -n 5 'systemctl --failed --no-legend'

Voor CPU- of geheugenbelasting, horloge biedt een gerichte weergave, maar zonder interactieve navigatie. De gids over htop onder Linux is geschikter als u processen moet sorteren, kolommen moet wijzigen en de verantwoordelijke afdeling moet kunnen traceren.

-G verandert het gebruik opnieuw: horloge Het stopt zodra de uitvoer verschilt. Hierdoor kunt u wachten op een statuswijziging zonder voor de terminal te hoeven blijven zitten:

watch -g -n 2 'systemctl is-active nginx'

Deze opdracht wordt beëindigd wanneer de geretourneerde tekst verandert. Controleer vervolgens de volledige status en logboeken voordat u iets opnieuw opstart.

systemctl status nginx --no-pager
journalctl -u nginx -n 50 --no-pager

Als u de eenheden moet inventariseren voordat u actie onderneemt, raadpleeg dan ook de handleiding die specifiek is bedoeld voor systemctl en Linux-services.

Inzicht in aanhalingstekens, pipes en de -x optie

Standaard, horloge stuurt de bestelling naar sh-cDit is handig voor het gebruik van een pipe, een redirect of meerdere instructies. Plaats de volledige opdracht tussen enkele aanhalingstekens, zodat de shell, die bij elke iteratie wordt gestart, de volledige tekenreeks interpreteert:

watch -n 2 'ps -eo pid,pcpu,pmem,comm --sort=-pmem | head -n 10'
watch -n 5 'date; df -h /srv/data'

Zonder deze apostrofen kan de tube door je huidige shell worden verwerkt. horloge Het systeem ontvangt slechts een deel van de opdracht, waardoor het resultaat niet langer overeenkomt met wat je wilde waarnemen.

Als je geen slangetje of omleiding nodig hebt, -X Voert het programma direct uit met de argumenten. Deze vorm vermindert problemen met escape-sequenties:

watch -n 2 -x df -h /srv/data

Bewaar alle opties horloge vóór de opdrachtnaam. De verwerking van opties stopt bij het eerste argument dat geen optie is.

Laat het horloge geen destructieve cyclus worden.

horloge Geschikt voor afspeelbediening: df, vrij, ss, p.s., systemctl-status of een gezondheidsvraag. Het mag niet worden gebruikt in combinatie met een actie die het systeem wijzigt.

  • Herhaal niet rm, chmod, gekauwd of een partitioneringsopdracht.
  • Niet plaatsen systemctl opnieuw opstarten In horloge Je zou de service op elk interval opnieuw starten.
  • Vermijd erover na te denken passende updateeen back-up of een script dat naar de database schrijft.
  • Kies voor een externe API een interval dat geen throttling of onnodige belasting veroorzaakt.

Voor een HTTP-test met alleen-lezen-functionaliteit, gebruik een speciaal daarvoor ontworpen health route en sluit af bij een fout. -e als uw versie die mogelijkheid biedt:

watch -e -n 10 'curl -fsS http://127.0.0.1:8080/health'

Een shell-lus van het type terwijl het waar is Je kunt dezelfde herhaling uitvoeren, maar dat vereist wel dat je omgaat met wissen, vertraging, fouten en stoppen. horloge is geschikt voor tijdelijke observatie. Voor continue monitoring kunt u een monitoringtool, een systemd-timer of een script gebruiken dat de resultaten logt.

Stop met monitoren en kies de juiste tool voor logbestanden.

Druk op Ctrl + C stoppen horlogeHet waargenomen proces moet voltooid zijn vóór de volgende vernieuwing. Als de opdracht vastloopt, open dan een tweede terminal om de processen te identificeren voordat u een signaal verzendt.

pgrep -af watch
ps -o pid,ppid,stat,etime,cmd -p PID

Om een ​​krant te volgen die nieuwe berichten ontvangt, horloge Wis de geschiedenis bij elk bezoek. Voorkeur journalctl -f voor een systemd-eenheid of staart -F voor een bestand dat opnieuw kan worden aangemaakt door logrotatie:

journalctl -u nginx -f
tail -F /var/log/nginx/error.log

De gids voor Dit verschil is gedetailleerd. Gebruik daarom horloge Vergelijk korte momentopnamen en schakel vervolgens over naar een tool die de geschiedenis bijhoudt zodra de volgorde van de gebeurtenissen belangrijk wordt.

sudo apt update && sudo apt upgrade