Многим знакома ситуация: вы запускаете df -h, ждёте несколько секунд и запускаете эту команду снова, пока копируется файл или выполняется резервное копирование. Вместо ручного повторения команды можно использовать watch. Утилита автоматически перезапускает команду через фиксированный интервал и подсвечивает изменения, так что обновления легко заметить. Администраторы Linux и обычные пользователи Linux часто вынуждены запускать одну и ту же команду снова и снова, ожидая какого-либо изменения. Это может быть проверка дискового пространства при копировании файла, ожидание запуска службы или наблюдение за сетевыми соединениями при диагностике.

Повторять команду каждые несколько секунд утомительно, и при этом легко пропустить важное изменение. Здесь на помощь приходит watch.

Она автоматически повторяет любую команду Linux через равные промежутки времени и обновляет вывод на экране. Утилита также умеет подсвечивать различия между обновлениями, поэтому за системой можно следить в реальном времени без написания shell-скрипта.

Например, многие запускали df -h, ждали пару секунд и запускали её снова, пока выполнялось копирование большого файла или резервное копирование. Вместо ручного повтора watch сам перезапустит команду и обновит вывод, чтобы изменения были хорошо видны.

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

Что делает команда watch

Команда watch многократно выполняет другую команду через фиксированный интервал и обновляет терминал свежим выводом. По умолчанию она повторяет команду каждые 2 секунды, поэтому удобно следить за системой, не вводя одну и ту же команду вручную.

Утилита watch входит в пакет procps в дистрибутивах на базе Debian и в procps-ng в дистрибутивах на базе RHEL. В большинстве систем Linux она установлена по умолчанию, но если which watch не показывает путь, установите её через пакетный менеджер вашего дистрибутива.

В Ubuntu/Debian:

sudo apt install procps

В RHEL/Rocky Linux:

sudo dnf install procps-ng

Примечание: sudo запускает установку с правами администратора, которые нужны пакетному менеджеру для общесистемной установки ПО. Этот материал проверяли на Ubuntu 26.04 и Rocky Linux 10, но команда watch работает одинаково в большинстве современных дистрибутивов Linux.

Основной синтаксис

Основной синтаксис выглядит так:

watch [options] command

По умолчанию watch повторяет указанную команду каждые 2 секунды и обновляет экран свежим выводом.

Например:

watch df -h

Здесь:

  • watch запускает процесс наблюдения.

  • df -h это команда, которая выполняется повторно.

  • Параметр -h показывает размеры дисков в удобочитаемом виде, например в МБ или ГБ.

Чтобы остановить watch, нажмите Ctrl+C в любой момент.

Вывод виден только во время работы watch. Так как утилита перерисовывает экран, а не сохраняет историю, вывод нигде не сохраняется, если только вы явно не перенаправите его в файл или не используете средство логирования.

Every 2.0s: df -h                         tecmint: Wed Aug  5 10:46:34 2026

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           3.2G  2.0M  3.2G   1% /run
efivarfs        374K  222K  148K  61% /sys/firmware/efi/efivars
/dev/nvme0n1p1  458G   57G  378G  14% /
tmpfs            16G  336M   16G   3% /dev/shm
tmpfs           5.0M  8.0K  5.0M   1% /run/lock
tmpfs            16G     0   16G   0% /run/qemu
/dev/sda1       511M  6.2M  505M   2% /boot/efi
tmpfs           3.2G  136K  3.2G   1% /run/user/1000

Пример 1. Мониторинг дискового пространства при копировании файла

Предположим, нужно скопировать большой файл из /tmp на смонтированный общий ресурс NFS и при этом следить за доступным местом на исходной и целевой файловых системах.

watch -n 1 df -h /tmp /mnt/nfs-share

Здесь:

  • -n 1 обновляет вывод каждую секунду вместо стандартных 2 секунд.

  • df -h /tmp /mnt/nfs-share показывает использование диска только для исходной и целевой файловых систем.

По мере копирования на целевой файловой системе объём занятого пространства (Used) растёт, а свободного (Avail) уменьшается.

Наблюдение за обеими файловыми системами помогает убедиться, что копирование действительно идёт, и заранее заметить нехватку места до сбоя операции.

Пример 2. Подсветка изменений между обновлениями экрана

Предположим, нужно разобраться, почему служба неожиданно открывает или закрывает сетевые порты. Вместо ручного сравнения вывода ss каждые несколько секунд можно поручить watch подсвечивать изменения.

watch -d ss -tunlp

Вот что означают параметры:

  • -d подсвечивает любые различия между текущим и предыдущим экраном, поэтому изменения легко заметить.

  • ss -tunlp показывает активные сокеты TCP и UDP, а также связанные с ними имена процессов.

Когда службы запускаются, останавливаются или открывают новые соединения, watch подсвечивает затронутые строки, и изменения видны сразу, без сравнения каждого обновления вручную.

Пример 3. Изменение интервала обновления

При мониторинге системы под высокой нагрузкой стандартного интервала в 2 секунды может не хватить для быстрых изменений, например скачков температуры процессора.

watch -n 0.5 sensors
  • -n 0.5 обновляет вывод каждые 0,5 секунды вместо стандартных 2 секунд.

  • sensors показывает данные аппаратных датчиков, включая температуру процессора и системы.

Параметр -n принимает дробные значения секунд, поэтому можно обновлять вывод чаще. Реальная частота обновления зависит от времени выполнения команды.

Например, если sensors выполняется 400 миллисекунд, интервал 0,1 секунды не заставит вывод обновляться быстрее.

Дополнительно о мониторинге процессора, памяти, диска и других ресурсов можно узнать в курсе Linux Performance Monitoring Tools.

Пример 4. Автоматический выход из watch при изменении вывода

После перезапуска службы может потребоваться дождаться её полного запуска, прежде чем выполнять следующую задачу. Вместо повторных проверок статуса watch может завершиться сам, как только изменится вывод.

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

Вот что делает каждый параметр:

  • -g (или --chgexit) указывает watch выйти, как только вывод команды станет отличаться от первого запуска.

  • -n 2 проверяет команду каждые 2 секунды.

  • systemctl is-active nginx сообщает, в каком состоянии служба: active, inactive, failed или другом.

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

Например:

watch -g 'systemctl is-active nginx' && echo "Nginx is ready!"

Когда служба переходит в состояние active, watch завершается, и следующая команда выполняется автоматически.

Пример 5. Мониторинг появления новых записей в журнале

После изменения конфигурации веб-сервера или обратного прокси бывает нужно следить за журналом ошибок, отправляя тестовые запросы. Вместо повторного запуска tail можно поручить watch автоматически обновлять последние записи журнала.

watch -n 1 -d 'tail -n 20 /var/log/nginx/error.log'

Вот что делает команда:

  • -n 1 обновляет вывод каждую секунду.

  • tail -n 20 показывает последние 20 строк файла журнала при каждом обновлении.

  • -d подсвечивает строки, которые изменились с предыдущего обновления, поэтому новые записи легко заметить.

Это не замена tail -f, который непрерывно выводит новые записи журнала и сохраняет их по мере появления. watch показывает обновляемый снимок последних строк журнала, поэтому подходит для быстрой проверки новых ошибок при изменении конфигурации.

Частые ошибки при работе с командой watch

Вот несколько типичных ошибок при работе с watch:

  • Забытые кавычки для конвейеров. Команда watch df -h | grep sda отправляет экранный вывод watch в grep, а это обычно не то, что нужно. Лучше заключить всю команду в кавычки, чтобы watch выполнял её как единое целое:
watch 'df -h | grep sda'
  • Слишком короткий интервал обновления. Если команда выполняется дольше, чем заданный интервал, watch не сможет обновлять вывод быстрее. Например, если команда выполняется 3 секунды, интервал -n 1 не даст обновления каждую секунду.

  • Ожидание прокрутки или истории команд. watch на каждом обновлении перерисовывает экран, заменяя предыдущий вывод, а не сохраняя историю. Если нужно сохранить все строки, направьте вывод команды в файл или используйте tail -f для наблюдения за журналом.

  • Запуск интерактивных программ через watch. Программы вроде top, htop, vim и nano управляют собственным полноэкранным интерфейсом и не рассчитаны на запуск внутри watch. Их лучше запускать напрямую.

watch против цикла Bash или заданий cron

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

Например, такой цикл Bash:

while true; do
    command
    sleep 2
done

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

Задания cron решают другую задачу. Они нужны для автоматического запуска команд по расписанию, обычно раз в несколько минут или часов, даже когда вы не в системе. Для непрерывного обновления вывода в терминале cron не предназначен.

watch стоит использовать, когда нужно следить за командой в реальном времени и остановиться, как только цель достигнута. Если требуется сохранять вывод, отправлять уведомления или запускать команды в фоне по расписанию, лучше подойдут скрипт Bash или cron.

Итоги

Команда watch упрощает отслеживание изменений: она автоматически перезапускает любую команду Linux через заданные интервалы. Независимо от того, проверяете ли вы дисковое пространство, ждёте запуска службы или следите за журналами, watch даёт живое представление без написания скрипта.

Также рассмотрены обновление команд с произвольным интервалом через -n, подсветка изменений с помощью -d и автоматический выход при изменении вывода через -g.

Когда в следующий раз придётся раз за разом запускать одну и ту же команду, попробуйте watch. Это простой инструмент, который экономит время и делает системный мониторинг удобнее.

Как вы используете watch в повседневной работе? Делитесь в комментариях, если у вас есть любимый сценарий или полезный совет для других пользователей Linux.