linux-labs

Вики / Базовые команды

watch (повтор команды)

Команда procps БазовоеМониторинг

Периодический запуск команды с подсветкой изменений — следить за процессом.

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

watch command                     # каждые 2 секунды (по умолчанию)
watch -n1 command                 # каждую секунду
watch -d command                  # подсветить, что изменилось
Ключ Значение
-n N интервал в секундах (можно дробный: -n0.5)
-d подсветить изменения (-d=cumulative — накопительно)
-t без шапки (заголовка)
-g выйти, когда вывод изменится
-e остановиться при ненулевом коде возврата
-c интерпретировать ANSI-цвета
-x передать команду в exec без шелла
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, а не к команде.

Конвейер/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 — остановится при ошибке команды.

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

См. также