Введение
Watch используется для выполнения любой произвольной команды через равные промежутки времени и отображает вывод команды в окне терминала.
Это полезно, когда вам нужно многократно запускать команду и наблюдать за изменением вывода команды с течением времени. Например, вы можете использовать команду watch для отслеживания времени безотказной работы системы или использования диска.
Утилита watch является частью пакета procps
(или procps-ng
), который предустановлен почти во всех дистрибутивах Linux.
Как использовать команду «Смотреть»
Синтаксис команды watch следующий:
watch [OPTIONS] COMMAND
Чтобы лучше проиллюстрировать, как работает команда watch, давайте запустим команду date
:
watch date
Вы должны увидеть экран, подобный следующему:
Every 2.0s: date TEST-SERVER-1: Sat Dec 7 18:15:37 2019
Sat Dec 7 18:15:37 CET 2019
Как вы можете видеть на изображении выше, команда watch временно очищает все содержимое терминала и начинает выполнение данной команды через равные промежутки времени. При использовании без каких-либо опций часы будут выполнять указанную команду каждые две секунды.
В верхней левой части заголовка экрана вы можете увидеть интервал обновления часов и выполненную команду ( Every 2.0s: date
), а в верхней левой части часы показывают текущее время и дату. Если вы хотите отключить заголовок, используйте параметр -t
( –no-title
).
Вывод указанной команды отображается на экране и регулярно обновляется каждые две секунды.
Чтобы выйти из команды часов, достаточно нажать комбинацию Ctrl+C
Вы также можете настроить часы на выход при изменении вывода команды, используя параметр -g
( –chgexit
).
В следующих разделах мы рассмотрим наиболее часто используемые параметры команды Watch.
Как изменить временной интервал
Что делать, если двухсекундный интервал обновления по умолчанию не подходит для варианта использования?
Параметр -n
( --interval
), за которым следует желаемое количество секунд, позволяет изменить временной интервал между обновлениями:
watch -n INTERVAL_IN_SECONDS COMMAND
Например, чтобы контролировать использование дискового пространства с помощью команды df и обновлять экран каждые пять секунд, вы должны запустить:
watch -n 5 df -h
Every 5.0s: df -h TEST-SERVER-1: Sat Dec 7 18:19:19 2019
Filesystem Size Used Avail Use% Mounted on
udev 959M 0 959M 0% /dev
tmpfs 195M 652K 194M 1% /run
/dev/sda1 19G 2.3G 16G 13% /tmpfs 973M 0 973M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 973M 0 973M 0% /sys/fs/cgroup
tmpfs 195M 0 195M 0% /run/user/0
Выделите разницу между обновлениями
Параметр -d
( --difference
) заставит часы выделять изменения между последующими обновлениями.
watch -d COMMAND
Предположим, вы хотите отслеживать время безотказной работы системы, запустив команду uptime, чтобы выделить изменения, используя следующую команду:
watch -d uptime
Every 2.0s: uptime TEST-SERVER-1: Sat Dec 7 18:21:02 2019
18:21:02 up 7 days, 1:49, 1 user, load average: 0.00, 0.00, 0.00
Если вы хотите, чтобы основные моменты были выделены, чтобы сделать отображение более четким, используйте параметр =cumulative
с опцией -d
. Это означает, что любые значения, которые когда-либо были изменены, останутся выделенными.
watch -d=cumulative uptime
Команды с трубой
Если вы хотите запустить команду, содержащую конвейеры, вы должны заключить ее в одинарные или двойные кавычки. Если вы не заключите всю команду в кавычки, watch выполнит только первую команду, а затем передаст вывод следующей команде в конвейере.
watch 'COMMAND_1 | COMMAND_2'
Например, следующая команда будет отслеживать количество активных подключений к порту 80
, используя комбинацию утилит netstat
и grep
:
watch "netstat -anp | grep -c ':80\b.*LISTEN'"
Вывод
К настоящему моменту вы должны хорошо понимать, как использовать команду watch
в Linux. Вы можете просмотреть все параметры watch
с помощью следующей команды:
man watch