Команда watch: использование, интервал -n, подсветка -d и выход при изменении вывода

Тестовая средаСемейство RHELAlmaLinux 9.8procps-ng 3.3.17Учётная запись rootDebian 12 · procps-ng 4.0.2 обычная учётная запись
Команды для процессов · планирования задачwatchРасположение/usr/bin/watchПроверено 2026-11-05
Отслеживание изменений в выводе команды

Команда watch — это команда Linux, которая каждые 2 секунды заново выполняет указанную команду и перерисовывает её вывод на весь экран терминала. При наблюдении через watch за файлами на сервере AlmaLinux 9, которые менялись из другого окна, опция -d подсветила изменившиеся символы, а опция -g завершила watch после изменения вывода.

Вывод ниже получен в рабочей папке на сервере AlmaLinux 9.8 от имени root; на сервере Debian 12 проверялась только версия. Имя хоста в строке заголовка вверху экрана заменено примером server1, время указано в UTC.

1️⃣ Как пользоваться командой watch

  • ↪️ Интервал по умолчанию 2 секунды и выход по Ctrl+C

Если после watch указать команду для повтора, то без опций watch выполняет её каждые 2 секунды и заменяет экран новым выводом. При наблюдении за date вверху экрана появилась строка заголовка, а после пустой строки — вывод date.

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

Thu Oct 29 02:28:07 UTC 2026

Слева в строке заголовка показаны интервал обновления и выполняемая команда, справа — имя хоста и время последнего запуска. Когда тот же экран проверили снова через 2 секунды, время в заголовке и вывод date изменились вместе.

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

Thu Oct 29 02:28:09 UTC 2026

watch работает, пока вы сами его не остановите, поэтому его завершают через Ctrl+C. После нажатия Ctrl+C экран watch исчез и вернулось приглашение. Код выхода, проверенный сразу после этого, был 0.

echo $?
0

watch нужен для повторного запуска команд, которые выводят результат один раз и завершаются. Чтобы видеть, как меняется загрузка CPU и памяти по процессам, используйте команду top, которая сама перерисовывает свой экран.

watch входит в пакет procps-ng. Версию проверяют через [watch -v]: на сервере AlmaLinux 9.8 это 3.3.17, на сервере Debian 12 — 4.0.2.

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

2️⃣ Опции интервала и подсветки watch

  • ↪️ Интервал -n, подсветка -d и -t для скрытия заголовка

Число секунд после -n меняет интервал обновления. После запуска [watch -n 1 date] левая часть заголовка сменилась на 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

Согласно man-странице, интервал нельзя сделать короче 0,1 секунды, а меньшие значения заменяются на 0,1 секунды. Десятичным разделителем может быть как точка, так и запятая.

-d подсвечивает символы, которые отличаются от предыдущего обновления. Пока за size.log в рабочей папке наблюдали через [ls -l], из другого окна в этот файл добавили строку.

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

Когда размер файла изменился с 7 на 14, подсветилось всё от столбца размера до конца строки. Число стало на одну цифру длиннее, поэтому все символы после него сдвинулись на одну позицию. При следующем обновлении значение не изменилось, и подсветка исчезла.

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

Чтобы постоянно подсвечивать всё, что изменилось с первого запуска, используйте [--differences=permanent] (согласно man-странице).

-t убирает строку заголовка и пустую строку под ней, оставляя только вывод команды.

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

3️⃣ Условия завершения и опции команды watch

  • ↪️ -g при изменении вывода и -e при ошибке

-g завершает watch, когда меняется вывод команды. Это удобно, чтобы дождаться изменения содержимого файла состояния и перейти к следующей задаче.

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

running

Из другого окна командой ниже содержимое status.txt заменили на done.

printf 'done\n' > status.txt

После этого watch завершился, вернулось приглашение, а код выхода был 0.

echo $?
0

-e останавливает обновление экрана, когда команда завершается с ненулевым кодом выхода. При наблюдении через ls за файлом, которого нет в рабочей папке, появился вывод ошибки ls, а в нижней строке экрана — сообщение о том, что нажатие клавиши завершит работу.

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

Время в заголовке застыло на моменте сразу после запуска, а нажатие одной клавиши завершило watch. Код выхода в этот раз был 8.

echo $?
8

man-страница описывает код выхода 8 как значение, которое включает случай, когда команда завершилась с ошибкой.

📌 Основные опции: результаты из этой статьи

ОпцияНазначениеРезультат в этой статье
-n секундыМеняет интервал обновления (по умолчанию 2 секунды)Заголовок сменился на Every 1.0s
-dПодсвечивает символы, отличающиеся от предыдущего обновленияПри размере 7 → 14 подсветка от этого столбца до конца строки, исчезла при следующем обновлении
-tСкрывает строку заголовка и пустую строку под нейОсталась только одна строка вывода date
-gЗавершает watch при изменении выводаЗавершилось после running → done, код выхода 0
-eОстанавливает экран, если команда завершилась с ошибкойЗавершилось после нажатия клавиши, код выхода 8
-vВыводит сведения о версииСервер AlmaLinux 9.8: watch from procps-ng 3.3.17, сервер Debian 12: watch from procps-ng 4.0.2

📎 Другие опции: по официальному руководству

ОпцияНазначение
-bПодаёт звуковой сигнал, когда команда завершается с ненулевым кодом выхода
-cИнтерпретирует ANSI-коды цвета и стиля, чтобы вывод команды сохранял цвета
-pЗапускает строго по интервалу, чтобы время обновления не сдвигалось
-xЗапускает команду через exec вместо sh -c, поэтому нужно меньше кавычек
-wОбрезает длинные строки вместо переноса на следующую строку
--differences=permanentПостоянно подсвечивает всё, что изменилось с первого запуска
-hВыводит справку

4️⃣ Кавычки и конвейеры в команде watch

  • ↪️ Одинарные кавычки и наблюдение за использованием диска

watch выполняет полученную команду через sh -c, поэтому команду, в которой есть конвейер(|) или $, целиком заключают в одинарные кавычки. При наблюдении за числом файлов в рабочей папке через [ls | wc -l] в заголовке была видна вся команда вместе с конвейером.

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

6

Когда из другого окна создали ещё один файл, при следующем обновлении число изменилось с 6 на 7.

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

7

Если ввести [watch -n 1 ls | wc -l] без кавычек, оболочка сначала разделит конвейер, и весь экранный вывод watch уйдёт в wc. Поэтому, если в отслеживаемой команде есть конвейер, всю команду заключают в кавычки.

$ подчиняется тому же правилу. При запуске [watch -n 1 echo $$] без кавычек текущая оболочка сначала заменила $$ числом, и это число появилось и в команде в заголовке.

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

3755802

В одинарных кавычках $$ передаётся без изменений, поэтому в заголовке было видно echo $$, а при каждом обновлении выводился PID только что запущенного 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 текущей оболочки, проверенный через [echo $$], совпал с числом, которое было зафиксировано при запуске без кавычек.

echo $$
3755802

За медленно меняющимися значениями, например использованием диска, наблюдают с интервалом в несколько секунд. Команда du: -s выводит только итог, а -h — размеры в единицах вроде K и M. Пока за рабочей папкой наблюдали через [du -sh .], из другого окна в файл журнала добавили 8001 байт, и при следующем обновлении 28K сменилось на 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     .

🔲 Симулятор команды watch

В симуляторе ниже запустите watch и меняйте файлы чипами [🖊 Другое окно], чтобы своими глазами увидеть, как меняется экран.

Симулятор команды watchprocps-ng 3.3.17
[root@server work]#
Работает только в вашем браузере. На экране watch меняйте файлы чипами [Другое окно] и завершайте через Ctrl+C.

🔢 FAQ & рекомендуемые материалы

Согласно man-странице, если записать число секунд в переменную окружения WATCH_INTERVAL, это значение используется как интервал, когда -n не указан. Для значения действуют те же правила, что и для -n, поэтому оно не может быть меньше 0,1 секунды.

Согласно man-странице, watch удаляет управляющие символы из вывода перед отрисовкой. Чтобы видеть цвета при наблюдении за командой с цветным выводом, добавьте -c, как в [watch -c].

Согласно man-странице, при обычном запуске дробная часть секунды во времени обновления понемногу растёт с каждым обновлением. С -p watch запускает команду строго по интервалу, и эта часть остаётся почти неизменной.

ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Докажите, что вы человек: 3   +   9   =