Polecenie watch: użycie, interwał -n, wyróżnianie -d i wyjście po zmianie wyniku
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
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 dateEvery 2.0s: date server1: Thu Oct 29 02:28:07 2026
Thu Oct 29 02:28:07 UTC 2026Lewa 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 2026watch 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 $?0watch 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 -vwatch from procps-ng 3.3.17watch -vwatch from procps-ng 4.0.22️⃣ Opcje interwału i wyróżniania w watch
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 dateEvery 1.0s: date server1: Thu Oct 29 02:28:15 2026
Thu Oct 29 02:28:15 UTC 2026Wedł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.logEvery 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.logprintf 'line 2\n' >> size.logGdy 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.logAby 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 dateThu Oct 29 02:28:19 UTC 20263️⃣ Warunki zakończenia i opcje polecenia watch
-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.txtEvery 1.0s: cat status.txt server1: Thu Oct 29 02:29:12 2026
runningZ innego okna poniższe polecenie zmieniło zawartość status.txt na done.
printf 'done\n' > status.txtWtedy 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.txtEvery 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 exitCzas 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 $?8Strona 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
| Opcja | Zadanie | Wynik w tym artykule | |
|---|---|---|---|
| -n sekundy | Zmienia interwał odświeżania (domyślnie 2 sekundy) | Nagłówek zmienił się na Every 1.0s | |
| -d | Wyróżnia znaki różniące się od poprzedniego odświeżenia | Przy rozmiarze 7 → 14 wyróżnione od tej kolumny do końca wiersza, znikło przy następnym odświeżeniu | |
| -t | Wyłącza wiersz nagłówka i pusty wiersz pod nim | Został tylko jeden wiersz wyniku date | |
| -g | Kończy watch, gdy zmieni się wynik | Zakończone po running → done, kod wyjścia 0 | |
| -e | Zatrzymuje ekran, gdy polecenie kończy się błędem | Zakończone po naciśnięciu klawisza, kod wyjścia 8 | |
| -v | Wypisuje informacje o wersji | Serwer 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
| Opcja | Zadanie | |
|---|---|---|
| -b | Wydaje sygnał dźwiękowy, gdy polecenie kończy się kodem wyjścia różnym od 0 | |
| -c | Interpretuje kody ANSI kolorów i stylów, dzięki czemu wynik polecenia zachowuje kolory | |
| -p | Uruchamia w każdym interwale, aby czas odświeżania się nie przesuwał | |
| -x | Uruchamia polecenie przez exec zamiast sh -c, więc potrzeba mniej cudzysłowów | |
| -w | Przycina długie wiersze zamiast zawijać je do następnego wiersza | |
| --differences=permanent | Stale wyróżnia wszystko, co zmieniło się od pierwszego uruchomienia | |
| -h | Wypisuje pomoc |
4️⃣ Cudzysłowy i potoki w poleceniu watch
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
6Po 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.txtEvery 1.0s: ls | wc -l server1: Thu Oct 29 02:30:24 2026
7Jeś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
3755802W 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
3756270Every 1.0s: echo $$ server1: Thu Oct 29 02:29:41 2026
3756333PID bieżącej powłoki sprawdzony przez [echo $$] był tą samą liczbą, która pozostała stała przy uruchomieniu bez cudzysłowów.
echo $$3755802Wartoś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.logEvery 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.
🔢 FAQ & polecane treści
Stan systemu
Polecenie uptime w Linuksie (czas pracy serwera & średnie obciążenie z 1, 5 i 15 minut)
Polecenie uptime pokazuje w jednym wierszu, jak długo działa serwer, oraz średnie obciążenie z 1, 5 i 15 minut.
Tekst
Polecenia head i tail w Linuksie
Polecenia head i tail wypisują początek i koniec pliku. Aby śledzić koniec rosnącego dziennika, użyj [tail -f].
Dysk
Polecenie df
Polecenie df wypisuje dla każdego systemu plików całkowity rozmiar, użycie i wolne miejsce.
ℹ️ 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.