Многим знакома ситуация: вы запускаете 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.






Пока нет комментариев. Будьте первым!