Для многократного выполнения команды или задания через регулярные промежутки времени при работе в Linux можно использовать задания cron или сценарии bash. Однако Linux также предлагает более простое, встроенное решение - команду watch.
В этом руководстве вы узнаете синтаксис команды watch, как она работает, и различные вещи, которые она может помочь вам сделать.
Обзор команды watch в Linux
Команда watch - это встроенная утилита Linux, используемая для выполнения определенных пользователем команд через регулярные промежутки времени. Она временно очищает все содержимое терминала и отображает вывод подключенной команды, а также текущую системную дату и время.
По умолчанию команда watch обновляет вывод каждые две секунды. Нажмите Ctrl+C, чтобы выйти из вывода команды.
Команда watch полезна, когда необходимо отслеживать изменения в выводе команды с течением времени. К ним относятся использование диска, время работы системы или отслеживание ошибок.
Синтаксис команды watch в Linux
Команда watch использует следующий синтаксис:
1 | watch [опция] [команда] |
Где:
- [опция]: Добавление опции изменяет поведение команды watch. Доступные опции перечислены ниже.
- [команда]: Определенная пользователем команда, которую вы хотите выполнять многократно.
Опции команды watch включают:
-n, --interval | Позволяет указать интервал между обновлениями вывода. |
-d, --differences | Выделяет различия между обновлениями вывода. |
-g, --chgexit | Выходит из команды watch при изменении вывода пользовательской команды. |
-t, --no-title | Удаляет заголовок с указанием интервала, команды и текущего времени и даты. |
-b, --beep | Воспроизводит звуковое оповещение (бип), если команда завершается с ошибкой. |
-p, --precise | Пытается выполнить команду через точное количество секунд, заданное параметром --interval. |
-e, --errexit | Останавливает обновление вывода при ошибке и завершает команду после нажатия клавиши. |
-c, --color | Интерпретирует последовательности цветов и стилей ANSI. |
-x, --exec | Передает команду, заданную пользователем, в exec, уменьшая необходимость в дополнительном цитировании. |
-w, --no-linewrap | Отключает обводку строк и обрезает длинные строки. |
-h, --help | Отображает текст справки и завершает работу. |
-v, --version | Отображает информацию о версии и завершает работу. |
Примеры команд watch в Linux
Вот некоторые способы использования опций команды watch для достижения различных результатов:
Запуск команды с пользовательским интервалом
Задайте пользовательский интервал для выполнения определенной пользователем команды и покажите вывод с помощью опции -n или --interval:
1 | watch -n [интервал в секундах] [команда] |
Например, чтобы выводить системное время и дату каждые 5 секунд, выполните команду:
1 | watch -n 5 date |
Используйте параметр -n для установки пользовательского интервала
Опция -n позволяет использовать доли секунды с минимальным интервалом в 0,1 секунды. При вводе десятичных цифр в любой локали работает как точка (.), так и запятая (,).
Выделение изменений между обновлениями
Используйте опцию -d или --difference, чтобы выделить изменения между последовательными обновлениями вывода:
1 | watch -d [команда] |
Например, отображение системной даты и времени с интервалом в 2 секунды по умолчанию с выделением изменений:
1 | watch -d date |
Передайте =cumulative к опции -d, если вы хотите, чтобы все значения, которые когда-либо изменялись, оставались выделенными:
1 | watch -d=cumulative date |
Выход при изменении
Опция -g или --chgexit заставляет команду watch выйти, если в выводе есть изменения:
1 | watch -g [команда] |
В качестве примера, добавление команды free отслеживает потребление памяти вашей системой и выходит при изменении значения:
1 | watch -g free |
Скрыть заголовок команды watch
Отключите заголовок, содержащий время интервала, команду, заданную пользователем, и текущее системное время в выводе команды watch, используя опцию -t или --no-title:
1 | watch -t [команда] |
Возвращаясь к примеру отображения системной даты и времени, на этот раз без заголовка:
1 | watch -t date |
Оповещение об ошибке
Команда watch использует пакет beep для воспроизведения звукового предупреждения, если обновление вывода не удалось из-за ошибки. Для этого используйте опцию -b или --beep:
1 | watch -b [команда] |
Если у вас не установлен пакет beep, добавьте его с помощью команды sudo apt install beep.
Использование сложных команд
Команда watch также позволяет использовать более сложные команды, определяемые пользователем, с собственными аргументами и опциями. Один из способов сделать это - использовать символ обратной косой черты ('\'):
1 | watch [опции] \ |
Использование приведенной выше команды приведет вас к следующей строке в терминале, где вам нужно будет добавить пользовательскую команду. Как только вы нажмете Enter, команда будет выполнена. Например:
1 2 | watch -n 5 \ echo "Вывод примера команды watch" |
Другой вариант - добавить определяемую пользователем команду в одинарных кавычках:
1 | watch [опции] "[команда]" |
Используя приведенный выше пример, команда будет выглядеть следующим образом:
Добавление сложной команды с использованием одинарных кавычек
Заключение
После прочтения этого руководства вы должны лучше понимать, как работает команда watch и для чего ее можно использовать.