Иногда при работе в командной строке Linux может возникнуть необходимость запускать какую-либо команду несколько раз подряд, чтобы отслеживать изменения в выводе. Вы будете рады узнать, что для этого существует специальная утилита командной строки. Речь идет о команде Watch, и в этом руководстве мы рассмотрим некоторые из её основных функций на простых примерах.
Но прежде чем приступить к этому, стоит упомянуть, что все примеры, использованные в этой статье, были протестированы на Ubuntu 22.04 LTS.
Команда watch в Linux
Как уже упоминалось, утилита watch позволяет повторно выполнять команду. Ниже приведен синтаксис этой команды:
watch [options] command
А вот как это описывается в справочной странице утилиты:
watch runs command repeatedly, displaying its output and errors (the first screenfull). This allows you to watch the program output change over time. By default, the program is run every 2 seconds. By default, watch will run until interrupted.
Ниже приведены несколько примеров в формате «вопрос-ответ», которые должны дать вам хорошее представление о том, как работает команда «watch».
В1. Как работает команда watch?
Основное использование команды watch очень просто — все, что вам нужно сделать, это запустить инструмент, указав в качестве входных данных имя команды. Например:
watch date
Вышеуказанная команда выдала следующий результат на моей системе:
![]()
Первая строка вывода показывает, что вывод команды «date» обновляется каждые 2 секунды (это интервал по умолчанию), за чем следует текущая дата и время системы. Вторая строка — это фактический вывод команды «date», который обновляется каждые несколько секунд.
Вопрос 2. Как заставить watch выделять различия между обновлениями?
Как уже объяснялось в предыдущем разделе, вывод отслеживаемой команды регулярно обновляется (по умолчанию каждые 2 секунды). При желании вы также можете заставить ‘watch’ выделять ту часть вывода, которая изменяется между обновлениями.
Это можно сделать с помощью опции командной строки -d. Например:
watch -d date
И вот как теперь команда watch выделяет изменения:
![]()
В3. Как настроить интервал обновления?
Как уже упоминалось, интервал обновления по умолчанию составляет 2 секунды. Однако при желании вы можете изменить это значение с помощью опции командной строки -n, для чего необходимо передать новое значение интервала в качестве аргумента.
Например:
watch -n 5 date
Эта команда обеспечит обновление вывода каждые 5 секунд. Обратите внимание, что интервалы менее 0,1 секунды не допускаются.
Примечание: Чтобы интервал соблюдался с высокой точностью, используйте опцию командной строки -p. Вот как эта опция описывается в справочной странице:
Make watch attempt to run command every interval seconds. Try it with ntptime and notice how the fractional seconds stays nearly) the same, as opposed to normal mode where they continu? ously increase.
В4. Как отключить заголовок в выводе?
При желании вы также можете попросить ‘watch’ отключить заголовок, отображающий интервал, команду и текущее
время в верхней части экрана, а также следующую пустую строку. Это можно сделать с помощью опции командной строки -t.
Например:
watch -t date
Вот вывод, полученный при выполнении приведенной выше команды:

Как видите, заголовок был полностью удален.
Вопрос 5. Как заставить watch завершиться при изменении вывода?
Если вы хотите, чтобы команда ‘watch’ завершалась после обнаружения изменения в выводе, используйте опцию командной строки -g.
Например:
watch -g free
Таким образом, при любом изменении объема памяти в системе команда watch завершит работу.