Polecenie watch: użycie, interwał -n, wyróżnianie -d i wyjście po zmianie wyniku

Środowisko testoweRodzina RHELAlmaLinux 9.8procps-ng 3.3.17konto rootDebian 12 · procps-ng 4.0.2 zwykłe konto
Polecenia procesów · harmonogramuwatchLokalizacja/usr/bin/watchSprawdzono 2026-11-05
Śledzenie zmian w wyniku polecenia

Polecenie watch to polecenie Linuksa, które co 2 sekundy ponownie uruchamia podane polecenie i rysuje jego wynik na całym ekranie terminala. Podczas śledzenia przez watch plików na serwerze AlmaLinux 9, zmienianych z innego okna, opcja -d wyróżniła zmienione znaki, a opcja -g zakończyła watch po zmianie wyniku.

Poniższe wyniki pochodzą z folderu roboczego na serwerze AlmaLinux 9.8, uruchomione na koncie root; na serwerze Debian 12 sprawdzono tylko wersję. Nazwę hosta w wierszu nagłówka u góry ekranu zastąpiono przykładową wartością server1, a czas podano w UTC.

1️⃣ Jak używać polecenia watch

  • ↪️ Domyślny interwał 2 sekund i wyjście przez Ctrl+C

Wpisz po watch polecenie do powtarzania; bez opcji watch uruchamia je co 2 sekundy i zastępuje ekran nowym wynikiem. Przy śledzeniu date u góry ekranu pojawił się wiersz nagłówka, a po pustym wierszu wynik date.

watch date
Every 2.0s: date                                                   server1: Thu Oct 29 02:28:07 2026

Thu Oct 29 02:28:07 UTC 2026

Lewa strona wiersza nagłówka to interwał odświeżania i uruchomione polecenie, prawa to nazwa hosta i czas ostatniego uruchomienia. Gdy ten sam ekran sprawdzono ponownie 2 sekundy później, czas w nagłówku i wynik date zmieniły się razem.

Every 2.0s: date                                                   server1: Thu Oct 29 02:28:09 2026

Thu Oct 29 02:28:09 UTC 2026

watch działa, dopóki sam go nie zakończysz, więc kończy się go przez Ctrl+C. Po naciśnięciu Ctrl+C ekran watch zniknął i wrócił znak zachęty. Kod wyjścia sprawdzony zaraz potem wynosił 0.

echo $?
0

watch służy do powtarzania poleceń, które wypisują wynik raz i kończą działanie. Aby zobaczyć, jak zmienia się użycie CPU i pamięci przez poszczególne procesy, lepiej nadaje się polecenie top, które samo odświeża swój ekran.

watch należy do pakietu procps-ng. Wersję sprawdzisz przez [watch -v]; na serwerze AlmaLinux 9.8 była to 3.3.17, a na serwerze Debian 12 4.0.2.

watch -v
watch from procps-ng 3.3.17
watch -v
watch from procps-ng 4.0.2

2️⃣ Opcje interwału i wyróżniania w watch

  • ↪️ Interwał -n, wyróżnianie -d i -t do ukrycia nagłówka

Liczba sekund po -n zmienia interwał odświeżania. Po uruchomieniu [watch -n 1 date] lewa strona nagłówka zmieniła się na Every 1.0s.

watch -n 1 date
Every 1.0s: date                                                   server1: Thu Oct 29 02:28:15 2026

Thu Oct 29 02:28:15 UTC 2026

Według strony man interwału nie można ustawić krótszego niż 0,1 sekundy, a mniejsze wartości są zmieniane na 0,1 sekundy. Jako separator dziesiętny rozpoznawana jest zarówno kropka, jak i przecinek.

-d wyróżnia znaki, które różnią się od poprzedniego odświeżenia. Podczas śledzenia pliku size.log w folderze roboczym przez [ls -l] z innego okna dopisano do niego jeden wiersz.

watch -d -n 1 ls -l size.log
Every 1.0s: ls -l size.log                                         server1: Thu Oct 29 02:28:53 2026

-rw-r--r-- 1 root root 7 Oct 29 02:28 size.log
printf 'line 2\n' >> size.log

Gdy rozmiar pliku zmienił się z 7 na 14, wyróżniono wszystko od kolumny rozmiaru do końca wiersza. Liczba zyskała jedną cyfrę, więc wszystkie znaki za nią przesunęły się o jedno miejsce. Przy następnym odświeżeniu wartość się nie zmieniła i wyróżnienie zniknęło.

Every 1.0s: ls -l size.log                                         server1: Thu Oct 29 02:28:54 2026

-rw-r--r-- 1 root root 14 Oct 29 02:28 size.log

Aby stale wyróżniać wszystko, co zmieniło się od pierwszego uruchomienia, użyj [--differences=permanent] (według strony man).

-t usuwa wiersz nagłówka i pusty wiersz pod nim, zostawiając tylko wynik polecenia.

watch -t -n 1 date
Thu Oct 29 02:28:19 UTC 2026

3️⃣ Warunki zakończenia i opcje polecenia watch

  • ↪️ -g przy zmianie wyniku i -e przy błędach

-g kończy watch, gdy zmieni się wynik polecenia. Przydaje się, gdy trzeba poczekać na zmianę zawartości pliku stanu przed przejściem do kolejnego zadania.

watch -g -n 1 cat status.txt
Every 1.0s: cat status.txt                                         server1: Thu Oct 29 02:29:12 2026

running

Z innego okna poniższe polecenie zmieniło zawartość status.txt na done.

printf 'done\n' > status.txt

Wtedy watch się zakończył, wrócił znak zachęty, a kod wyjścia wynosił 0.

echo $?
0

-e zatrzymuje odświeżanie ekranu, gdy polecenie kończy się kodem wyjścia różnym od 0. Przy śledzeniu przez ls pliku, którego nie ma w folderze roboczym, pojawił się komunikat błędu ls, a w ostatnim wierszu ekranu informacja, że naciśnięcie klawisza kończy działanie.

watch -e -n 1 ls nofile.txt
Every 1.0s: ls nofile.txt                                          server1: Thu Oct 29 02:29:18 2026

ls: cannot access 'nofile.txt': No such file or directory










command exit with a non-zero status, press a key to exit

Czas w nagłówku zatrzymał się na chwili tuż po uruchomieniu, a naciśnięcie jednego klawisza zakończyło watch. Tym razem kod wyjścia wynosił 8.

echo $?
8

Strona man opisuje kod wyjścia 8 jako wartość obejmującą przypadek, gdy polecenie zakończyło się błędem.

📌 Główne opcje: wyniki z tego artykułu

OpcjaZadanieWynik w tym artykule
-n sekundyZmienia interwał odświeżania (domyślnie 2 sekundy)Nagłówek zmienił się na Every 1.0s
-dWyróżnia znaki różniące się od poprzedniego odświeżeniaPrzy rozmiarze 7 → 14 wyróżnione od tej kolumny do końca wiersza, znikło przy następnym odświeżeniu
-tWyłącza wiersz nagłówka i pusty wiersz pod nimZostał tylko jeden wiersz wyniku date
-gKończy watch, gdy zmieni się wynikZakończone po running → done, kod wyjścia 0
-eZatrzymuje ekran, gdy polecenie kończy się błędemZakończone po naciśnięciu klawisza, kod wyjścia 8
-vWypisuje informacje o wersjiSerwer AlmaLinux 9.8: watch from procps-ng 3.3.17, serwer Debian 12: watch from procps-ng 4.0.2

📎 Pozostałe opcje: według oficjalnego podręcznika

OpcjaZadanie
-bWydaje sygnał dźwiękowy, gdy polecenie kończy się kodem wyjścia różnym od 0
-cInterpretuje kody ANSI kolorów i stylów, dzięki czemu wynik polecenia zachowuje kolory
-pUruchamia w każdym interwale, aby czas odświeżania się nie przesuwał
-xUruchamia polecenie przez exec zamiast sh -c, więc potrzeba mniej cudzysłowów
-wPrzycina długie wiersze zamiast zawijać je do następnego wiersza
--differences=permanentStale wyróżnia wszystko, co zmieniło się od pierwszego uruchomienia
-hWypisuje pomoc

4️⃣ Cudzysłowy i potoki w poleceniu watch

  • ↪️ Ujmowanie w pojedyncze cudzysłowy i śledzenie użycia dysku

watch uruchamia otrzymane polecenie przez sh -c, więc polecenie zawierające potok(|) lub $ ujmij w całości w pojedyncze cudzysłowy. Przy śledzeniu liczby plików w folderze roboczym przez [ls | wc -l] nagłówek pokazał całe polecenie razem z potokiem.

watch -n 1 'ls | wc -l'
Every 1.0s: ls | wc -l                                             server1: Thu Oct 29 02:30:22 2026

6

Po utworzeniu z innego okna jeszcze jednego pliku liczba przy następnym odświeżeniu zmieniła się z 6 na 7.

printf 'c\n' > q3.txt
Every 1.0s: ls | wc -l                                             server1: Thu Oct 29 02:30:24 2026

7

Jeśli wpiszesz [watch -n 1 ls | wc -l] bez cudzysłowów, powłoka najpierw rozdzieli potok i cały wynik ekranowy watch trafi do wc. Dlatego gdy śledzone polecenie zawiera potok, ujmij całe polecenie w cudzysłowy.

$ podlega tej samej zasadzie. Po uruchomieniu [watch -n 1 echo $$] bez cudzysłowów bieżąca powłoka najpierw zamieniła $$ na liczbę i ta liczba pojawiła się też w poleceniu w nagłówku.

watch -n 1 echo $$
Every 1.0s: echo 3755802                                           server1: Thu Oct 29 02:29:37 2026

3755802

W pojedynczych cudzysłowach $$ jest przekazywane bez zmian, więc nagłówek pokazał echo $$, a przy każdym odświeżeniu wypisywany był PID nowo uruchomionego sh.

watch -n 1 'echo $$'
Every 1.0s: echo $$                                                server1: Thu Oct 29 02:29:40 2026

3756270
Every 1.0s: echo $$                                                server1: Thu Oct 29 02:29:41 2026

3756333

PID bieżącej powłoki sprawdzony przez [echo $$] był tą samą liczbą, która pozostała stała przy uruchomieniu bez cudzysłowów.

echo $$
3755802

Wartości zmieniające się powoli, takie jak użycie dysku, śledzi się z interwałem kilku sekund. Polecenie du: -s wypisuje tylko sumę, a -h podaje rozmiary w jednostkach takich jak K i M. Podczas śledzenia folderu roboczego przez [du -sh .] dopisanie z innego okna 8001 bajtów do pliku dziennika zmieniło przy następnym odświeżeniu 28K na 36K.

watch -n 2 du -sh .
Every 2.0s: du -sh .                                               server1: Thu Oct 29 02:30:34 2026

28K     .
printf '000d\n' 0 >> grow.log
Every 2.0s: du -sh .                                               server1: Thu Oct 29 02:30:36 2026

36K     .

🔲 Symulator polecenia watch

W symulatorze poniżej uruchom watch, a potem zmieniaj pliki chipami [🖊 Inne okno], aby na własne oczy zobaczyć, jak zmienia się ekran.

Symulator polecenia watchprocps-ng 3.3.17
[root@server work]#
Działa tylko w przeglądarce. Na ekranie watch zmieniaj pliki chipami [Inne okno] i zakończ przez Ctrl+C.

🔢 FAQ & polecane treści

Według strony man, jeśli wpiszesz liczbę sekund do zmiennej środowiskowej WATCH_INTERVAL, ta wartość jest używana jako interwał, gdy nie podano -n. Wartość podlega tym samym zasadom co -n, więc nie może być krótsza niż 0,1 sekundy.

Według strony man watch usuwa z wyniku znaki sterujące, zanim go narysuje. Aby widzieć kolory podczas śledzenia polecenia z kolorowym wynikiem, dodaj -c, jak w [watch -c].

Według strony man przy zwykłym uruchomieniu ułamek sekundy w czasie odświeżania rośnie trochę z każdym odświeżeniem. Z opcją -p watch uruchamia polecenie w każdym interwale, więc ten ułamek pozostaje prawie taki sam.

ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Prove your humanity: 0   +   6   =