Иногда возникает необходимость запускать ту или иную команду несколько раз. К примеру, если были замечены неполадки в работе сервера и есть основания полагать, что их причина кроется в использовании памяти либо выполнении операций ввода и вывода. Также это может понадобиться для отслеживания изменений в каталогах. Во всех этих и других случаях на помощь придет команда 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, задавайте их в комментариях.
-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 более интуитивен для новичков.