Гид по технологиям

cv — мониторинг прогресса копирования и других команд в Linux

5 min read Инструменты Обновлено 03 Dec 2025
cv — мониторинг прогресса копирования в Linux
cv — мониторинг прогресса копирования в Linux

Введение

cv — это небольшая утилита, которая находит в системе запущенные базовые утилиты coreutils (cp, mv, dd, tar, cat и т.д.) и отображает их процент выполнения и дополнительную информацию о копировании/переносе. Инструмент изначально для Linux; доступна также портированная версия для Mac OS X.

Кратко о терминах:

  • ETA — оценённое оставшееся время до завершения операции.
  • I/O throughput — пропускная способность ввода/вывода (скорость передачи данных).

Скачивание и установка

  1. Скачайте исходники с репозитория на GitHub (в примере файл назывался cv-master.zip).
unzip cv-master.zip
  1. Перейдите в каталог с исходниками и соберите программу:
cd cv-master
make
sudo make install

Важное замечание: cv зависит от библиотеки ncurses. На Debian/Ubuntu-подобных системах установите пакет вида libncurses-dev:

sudo apt-get install libncurses-dev

После установки бинарный файл обычно попадает в /usr/local/bin. Убедитесь, что этот путь есть в переменной окружения PATH, иначе либо запустите cv как /usr/local/bin/cv, либо перейдите в этот каталог и выполните ./cv.

Примечание: точные имена пакетов могут отличаться в зависимости от дистрибутива; при сомнении используйте менеджер пакетов вашего дистрибутива.

Как использовать

cv отслеживает команды, которые уже выполняются в системе. Поэтому запустите длительную операцию (например, копирование большого файла), затем в другой консоли запустите cv.

Примеры из практики:

Простой пример

Запустили копирование большого файла с флешки:

cp /media/usb/large.iso ~/Downloads/

В другой вкладке терминала выполнили:

./cv

cv выведет список отслеживаемых процессов с PID, командой и прогрессом в процентах и числах. Первая строка с текстом вроде cat inactive/flushing/streaming/... появляется по умолчанию и обычно игнорируется.

Если одновременно работают несколько длительных процессов, cv покажет прогресс по каждому из них.

Оценка пропускной способности и ETA

Чтобы получить оценку пропускной способности I/O и оставшегося времени, используйте опцию -w:

./cv -w

Пример вывода:

[9287]cp/media/himanshu/F58B-9AA9/casper-rw 10.3%(105.2 MiB /1 GiB)27.9 MiB/s eta 0:00:32

Здесь видно, что операция копирования идёт со скоростью ~27.9 MiB/s и завершится примерно через 32 секунды.

Зацикливание (не завершать после одного обновления)

По умолчанию cv делает одно снятие состояния и завершает работу. Чтобы он работал в режиме мониторинга до завершения отслеживаемых процессов, используйте -m:

cv -m

Это полезно, когда вы хотите оставлять вывод обновляющимся в течение всей операции.

Практические советы и отладка

Important: cv читает состояние процессов и файловой системы. Если прогресс не отображается, проверьте:

  • Действительно ли целевая команда выполняется в тот же момент (ps aux | grep cp).
  • Имеется ли доступ к /proc (в контейнерах или при ограниченных правах может не работать).
  • На некоторых файловых системах и драйверах метрики чтения/записи могут быть недоступны или неточны.

Если cv не находит процесс, проверьте текущий пользователь и права доступа — для чтения некоторых полей /proc може понадобиться root.

Альтернативы и когда cv не подходит

  • pv — показывает скорость и прогресс для потоков данных; полезен при проксировании данных через stdin/stdout.
  • rsync –progress — для удалённой и локальной синхронизации с подробным прогрессом и возобновлением.
  • dd status=progress — даёт прогресс при работе с dd (копирование образов).
  • progress (инструмент от той же команды) — ещё одна утилита для отслеживания command-line утилит.

Когда cv может не подойти:

  • Операции очень короткие (нет времени показать полезную информацию).
  • Операции на специальных устройствах, где статистика I/O недоступна.
  • Ограниченные среды (некоторые контейнеры, chroot) без /proc.

Мини-методология: как быстро выбрать инструмент

  1. Копируете локальный файл простым cp — cv удобно для мониторинга.
  2. Копируете через канал/конвейер (|) — используйте pv.
  3. Синхронизируете каталоги/сеть — rsync –progress.
  4. Копируете блочное устройство или образ — dd status=progress или cv как дополнительный монитор.
flowchart TD
  A[Что вы делаете?] --> B{Локальное копирование файла}
  B -->|Да| C[cv]
  B -->|Нет| D{Канал/поток}
  D -->|Да| E[pv]
  D -->|Нет| F{Сеть / синхронизация}
  F -->|Да| G[rsync --progress]
  F -->|Нет| H[dd status=progress]

Чек-листы по ролям

Администратор:

  • Проверить доступ к /proc для всех пользователей, которые будут мониториться.
  • Установить cv в /usr/local/bin и добавить путь в PATH.
  • Настроить cron/системные скрипты, если нужен автоматический мониторинг длительных операций.

Разработчик/инженер поддержки:

  • Использовать cv -m при тестировании длительных операций.
  • Сравнивать показания cv и инструмента I/O (iostat, iotop) при подозрениях на узкое место.

Обычный пользователь:

  • Запустить длительное копирование и во второй вкладке выполнить cv или ./cv.
  • При необходимости добавить -w для ETA.

Шпаргалка команд (cheat sheet)

  • Запуск простого мониторинга для текущего пользователя:
cv
  • С отображением скорости и ETA:
cv -w
  • Зацикленный режим (не завершается, пока процессы не завершатся):
cv -m
  • Запуск из /usr/local/bin (если PATH не настроен):
cd /usr/local/bin && ./cv

Критерии приёмки

  • cv отображает PID и команду для каждой длительной операции в выводе.
  • При использовании -w показывается оценочная скорость и ETA.
  • В режиме -m cv не завершает работу, пока отслеживаемые процессы не завершатся.

Совместимость и переносимость

  • Основная поддержка — Linux; есть порт для Mac OS X, но функциональность может отличаться из‑за особенностей /proc и реализованных вызовов ядра.
  • В контейнерах без /proc или с ограниченными правами cv может не работать. Для таких сред рассматривайте инструменты, встроенные в контейнерные платформы.

Безопасность и приватность

cv читает данные из /proc и отображает информацию о запущенных процессах. Не запускайте cv с привилегиями, если вы не доверяете окружению. Информация о файлах и путях может быть видна другим пользователям, если вывод перенаправляется в лог-файлы.

Заключение

cv — простой и полезный инструмент для мониторинга прогресса длительных команд в Linux. Он не заменяет специализированные инструменты для передачи данных или диагностики, но хорошо дополняет их в быстрой проверке «на лету». Благодаря небольшому коду его легко собрать, адаптировать и расширить под свои нужды.

Summary:

  • cv показывает процент выполнения для cp, mv, dd, tar и других.
  • -w добавляет оценку скорости и ETA; -m запускает режим мониторинга.
  • Рассматривайте pv, rsync или dd для задач, где cv не даёт детальной информации.

Была ли у вас практика использования cv или аналогичных утилит? Поделитесь опытом в комментариях.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Генерация AI-изображений в Krita
Графика

Генерация AI-изображений в Krita

Отключить синий свет на Ubuntu
Linux

Отключить синий свет на Ubuntu

Как скрыть выполненные задачи в Microsoft To-Do
Productivity

Как скрыть выполненные задачи в Microsoft To-Do

Стресс-тест видеокарты в Linux
Linux

Стресс-тест видеокарты в Linux

Ошибка Event ID 4625 на Windows Server — как исправить
Windows Server

Ошибка Event ID 4625 на Windows Server — как исправить

Винтажный портрет в Photoshop — пошагово
Фотография

Винтажный портрет в Photoshop — пошагово