watch

Cyklicznie wykonuje polecenie i odświeża jego wynik na ekranie.

watch to prosty, ale niedoceniany strażnik terminala. Uruchamia wskazane polecenie w kółko, domyślnie co 2 sekundy, i za każdym razem odświeża jego wynik w tym samym miejscu na ekranie — dzięki temu nie musisz ręcznie klepać tej samej komendy raz za razem ani zaśmiecać historii tysiącem powtórzeń. Idealne, gdy chcesz na żywo obserwować, jak coś się zmienia: liczbę procesów, zajętość dysku, stan usługi, przyrost logów albo postęp jakiegoś zadania w tle. Zamiast wpatrywać się w statyczny zrzut, dostajesz odświeżany na bieżąco podgląd.

Składnia i najważniejsze opcje

Podstawowa forma to watch [opcje] polecenie. Polecenie warto brać w cudzysłów, jeśli zawiera potoki albo spacje, żeby watch potraktował je jako całość.

  • -n, --interval — zmienia odstęp między wykonaniami (np. -n 5). Akceptuje ułamki, np. -n 0.5; wartości poniżej 0,1 s są podciągane do 0,1.
  • -d, --differences — podświetla to, co się zmieniło od poprzedniego odświeżenia. Bardzo pomaga wyłapać, która liczba właśnie skoczyła.
  • -t, --no-title — chowa nagłówek u góry (interwał, polecenie, zegar), zostawiając czysty output.
  • -g, --chgexit — kończy działanie, gdy tylko widoczny wynik się zmieni. Świetne do skryptów czekających na jakieś zdarzenie.
  • -e, --errexit — zamraża ekran, jeśli polecenie zwróci błąd, i czeka na naciśnięcie klawisza zamiast lecieć dalej.
  • -p, --precise — odpala polecenie co dokładnie N sekund od startu poprzedniego, a nie od jego zakończenia (stabilny rytm nawet przy wolnym poleceniu).
  • -c, --color — zachowuje kolory ANSI z wyniku polecenia (bez tego watch zwykle je zjada).
  • -b, --beep — piknie, jeśli polecenie zwróci niezerowy kod wyjścia.

Przykłady użycia

  • watch -n 1 free -h — co sekundę pokazuje zużycie pamięci w czytelnych jednostkach. Klasyk przy diagnozie wycieków RAM.
  • watch -d 'ls -l /var/log/nginx' — obserwujesz katalog z logami i widzisz podświetlone, które pliki rosną.
  • watch -n 2 'df -h | grep /dev/sda1' — pilnujesz zajętości konkretnej partycji, żeby złapać moment przepełnienia dysku.
  • watch -g 'systemctl is-active nginx'watch sam się zamknie, gdy status usługi się zmieni — wygodne w skrypcie deployu.
  • watch -n 5 'ps aux --sort=-%cpu | head' — lekki podgląd najbardziej żarłocznych procesów, gdy nie chcesz odpalać pełnego top.

Częste błędy i pułapki

Najczęstsza wpadka to potoki bez cudzysłowów: watch ps aux | grep nginx zadziała nie tak, jak myślisz — watch dostaje tylko ps aux, a grep filtruje cały ekran. Poprawnie: watch 'ps aux | grep nginx'. Podobnie aliasy i funkcje powłoki nie są dla watch widoczne — trzeba je rozpisać albo wywołać przez bash -c. Pamiętaj też, że watch pochodzi z pakietu procps i jest typowo linuksowy — na macOS domyślnie go nie ma (doinstalujesz przez brew install watch), a BusyBox ma okrojoną wersję bez części flag. I nie ustawiaj samobójczo krótkich interwałów typu -n 0.1 na ciężkim poleceniu — obciążysz maszynę bardziej niż to, co obserwujesz.

Powiązane komendy: top, htop, tail -f oraz while w pętli powłoki.