В репозиториях большинства linux-дистрибутивов есть небольшая, но очень полезная утилита -
progress. Она показывает процент выполнения для операций coreutils: cp, mv, dd, tar, gzip/gunzip, cat и других.По смыслу ее часто сравнивают с
pv, но принцип работы разный. pv получает данные из pipe - значит, поток нужно заранее направить через него.progress работает иначе: он сканирует /proc, находит поддерживаемые процессы, затем через fd и fdinfo отслеживает изменения открытых файлов и вычисляет прогресс.Главный плюс - подключиться можно в любой момент, даже если процесс уже запущен. Например, вы распаковываете огромный SQL-дамп и хотите понять, сколько еще ждать.
▪️ Пример. Создадим тестовый файл:
dd if=/dev/urandom of=testfile bs=1M count=2048
(Для dd процент может не отображаться, если конечный размер неизвестен, будет показываться только скорость.)
Сжимаем файл:
gzip testfile
В другой консоли смотрим прогресс:
watch -n 1 progress -q
Вывод будет примерно такой:
[34209] gzip /tmp/testfile
6.5% (132.2 MiB / 2 GiB)
Без watch утилита покажет текущее состояние и завершится, а для живого мониторинга лучше обновлять раз в секунду.
Аналогично при распаковке:
gunzip testfile.gz
Во второй консоли:
watch -n 1 progress -q
[35685] gzip /tmp/testfile.gz
76.1% (1.5 GiB / 2.0 GiB)
progress - крошечная утилита (~31 КБ), написанная на C, с единственной зависимостью - ncurses. Устанавливается просто:
apt install progress
dnf install progress
Минимум веса и максимум пользы.
#linux #progress
🧑💻 NetworkAdmin