С чего начать Первые шаги трек · 15 ступеней
Linux Labs

watch — периодический повтор команды

3 мин procps

Повторяет команду каждые N секунд на одном экране; без кавычек конвейер достанется оболочке, а не самой команде.

Шпаргалка

5 команд Версия для печати
  • watch -n1 -d 'команда' каждую секунду, подсветка изменений
  • watch cat /proc/mdstat прогресс (RAID/задачи)
  • watch 'ss -tlnp | grep :80' кавычки для конвейера!
  • watch -g cmd выйти при изменении вывода
  • watch -c 'docker ps' с цветом

Обзор

watch повторяет команду каждые N секунд и показывает свежий результат на том же экране — удобно следить за процессом (ребилд RAID, очередь, размер файла).

bash
watch command                     # каждые 2 секунды (по умолчанию)
watch -n1 command                 # каждую секунду
watch -d command                  # подсветить, что изменилось

Ключи

6

Команду с конвейером или шаблоном (|, *) всегда бери в кавычки — иначе их разберёт оболочка ещё до запуска watch, а не сама повторяемая команда. По умолчанию watch убирает ANSI-цвет из вывода; -c включает его обратно для команд, которые красят текст сами.

Ключ Что делает Пример
-n SECONDS Интервал между запусками в секундах; можно дробный, например 0.5. watch -n1 'ss -tlnp | grep :80'
-d Подсветить, что изменилось по сравнению с прошлым выводом. watch -d free -h
-g Завершиться, как только вывод команды изменится. watch -g 'systemctl is-active nginx'
-e Остановиться, если команда вернула ненулевой код. watch -e 'curl -sf http://localhost/healthz'
-c Интерпретировать ANSI-цвета в выводе команды. watch -c 'docker ps'
-t Не показывать заголовок с именем команды и временем. watch -t 'df -h'

Ничего не найдено. Попробуй запрос короче.

Рецепты

1

Примеры

bash
watch -n1 'ss -tlnp | grep :80'   # следить за слушающими портами (см. ss)
watch -d free -h                  # изменения памяти (подсветка)
watch -d 'ps aux --sort=-%cpu | head'   # топ по CPU в динамике
watch cat /proc/mdstat            # прогресс ребилда RAID (см. mdadm)
watch -n5 'ls -lh /var/log/app.log'   # как растёт лог
watch -g 'systemctl is-active nginx'  # ждать, пока статус сменится
watch -c 'docker ps'              # с цветом, состояние контейнеров

Кавычь команду с конвейером/шаблоном (watch 'ss | grep x'), иначе | и * применятся к самому watch, а не к команде.

Неполадки

4

Конвейер/grep «не работает» в watch

Заверни всю команду в кавычки: watch 'cmd | grep x'. Без кавычек оболочка разберёт |/* до watch.

Цвета пропали

По умолчанию watch убирает ANSI-цвет. Включи: watch -c 'cmd' (если команда красит).

Нужно следить за логом построчно

Для логов лучше tail -f (см. files-basics) или journalctl -f (см. journalctl); watch — для «снимка состояния», а не потока.

Хочу остановиться при изменении / готовности

watch -g cmd завершится, когда вывод изменится (удобно как «жди готовности»); watch -e cmd — остановится при ошибке команды.

См. также

  • system-monitoring — Нагрузка, CPU, память, I/O — load average, top/htop, vmstat, iostat, free.
  • processes — Просмотр, сигналы и приоритеты процессов; поиск пожирателей CPU/памяти.
  • files-basics — Навигация и файлы — ls, cd, cp, mv, rm, cat, less, head, tail, копипаст в терминале.
Загрузка…