Иногда возникает необходимость запускать ту или иную команду несколько раз. К примеру, если были замечены неполадки в работе сервера и есть основания полагать, что их причина кроется в использовании памяти либо выполнении операций ввода и вывода. Также это может понадобиться для отслеживания изменений в каталогах. Во всех этих и других случаях на помощь придет команда watch.
По умолчанию команда watch linux включена почти во все дистрибутивы Linux. Ее задача — запускать указанную пользователем команду через определенные промежутки времени и печатать вывод этой команды в окне терминала. Работу watch можно сравнить с работой tail, с той лишь разницей, что источником вывода является не файл журнала, а другая команда.
Содержание статьи
Команда watch в Linux
Синтаксис и опции
Синтаксис команды watch крайне прост:
watch опции команда_для_вывода
Перечень опций невелик, но их достаточно для эффективного использования команды:
- -d (--differences) — служит для выделения тех данных в выводе команды, которые отличаются от предыдущих.
- -n (--interval seconds) — позволяет установить желаемый интервал запуска команды.
- -t (--no-title) — выключает отображение заголовков.
- -b (--beep) — если при выполнении команды возникнет ошибка, будет подан звуковой сигнал.
- -e (--errexit) — при возникновении ошибки вывод данных будет заморожен, команда watch прекратит работу после нажатия комбинации клавиш.
- -g (--chgexit) — выход при условии, что в выводе команды обнаружатся изменения.
- -c (--color) — интерпретирует последовательность цветов и стилей ANSI.
- -x (--exec) — выполнение команды будет передано интерпретатору sh -c поэтому, возможно, вам придется использовать дополнительные кавычки чтобы добиться желаемого эффекта. При использовании полной версии написания (--exec) команда будет выполняться в с помощью утилиты exec.
Примеры использования watch
Проще всего продемонстрировать работу команды watch, наблюдая за тем, как компьютер использует оперативную память:
watch free -m
В данном случае не были использованы опции команды watch, зато к выполняемой команде free пришлось добавить параметр -m, который отвечает за отображение свободной памяти RAM. Так тоже можно и нужно делать, чтобы получить искомый результат.
Чтобы не запоминать каким был предыдущий результат вывода и не отслеживать изменения самостоятельно, стоит поручить эту работу опции -d. Она подсвечивает ту информацию, которая отличается от предыдущей:
watch -d date
На каждом из скриншотов в верхней строке есть надпись «Every 2,0s». Она означает, что программа перезапускается каждые 2 секунды. Этот интервал установлен по умолчанию, но его можно изменить, используя опцию -n.
watch -n5 -d 'cat /proc/loadavg'
Обратите внимание на то, что значение -n не может быть меньше 1. Верхняя планка не ограничена.
Если возникла необходимость получить на экране терминала больше места для полезных данных, можно убрать заглавную информацию. Для этого предназначена опция -t.
watch -t df
Интервал обновления, опции команды и текущая дата больше не отображаются.
Что касается выхода из утилиты watch, то он осуществляется при нажатии клавиш Ctrl+C или Ctrl+Z. Пока пользователь не воспользуется одной из этих комбинаций, команда будет выполняться с заданными параметрами.
Выводы
Команда watch linux — это простой и эффективный инструмент для всех, кто занимается администрированием серверов. Впрочем, и обычные пользователи могут найти ей применение. Если у вас возникли вопросы относительно использования watch на компьютерах с установленной операционной системой Linux, задавайте их в комментариях.
Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали










-n may be less than 1 , for example .2 = 0.2 sec
Thank you for you articles.
-n.1 или -n,1 минимальный интервал 0,1 с
...выполнение команды будет передано интерпретатору sh с задействованием оболочки ***dash***
Не опечатка ли это?
Там вообще что-то непонятное. Поправил так как было в man.
Использовал для мониторинга температуры и оборотов кулера:
$ watch -n 1 sensors
А как же
for ((;;)) do ... ; sleep 2 ; done
?
Спасибо за предложенный скрипт.
Watch более интуитивен для новичков.