Рубрики
Uncategorized

Добавить панели прогресса в любую команду

Такие инструменты, как GZIP и друзья, отличные, но у них нет бара прогресса. Tagged с Showdev, DevOps.

Вы когда -нибудь пробовали сжать огромный файл, немного ждали перед вашим терминалом и задавались вопросом, стоит ли вам приобрести кофе или это будет просто закончить?

Потратив некоторое время на разбор с огромными файлами и попытка выяснить, сколько я продвинулся, я обнаружил, что я решил индустриализовать. Введите Spybar Анкет

Это простой сценарий Python, который вы можете получить с помощью

pip install spybar

Если вы префиксу команду с ней, она запустит ее и отобразит панель прогресса. Вы также можете прикрепить к существующему PID. Все объяснено в readme Анкет

Эта статья, однако, не об использовании инструмента. Это о том, как это работает.

Давайте сначала указать, что он совместим с Linux. Возможно, есть какой -то способ сделать это в других операционных системах, но эта статья не об этом.

В Linux есть специальный каталог, /proc который содержит каталог для каждого процесса работы.

Предположим, что вы работаете над процессом 42 , вы можете перечислить все файлы, открытые процессом, выполнив

ls -lsh /proc/42/fd

Когда вы открываете файл, в C вы получаете целое число, которое является обработчиком файла. Все эти целые числа перечислены в fd каталог. Все они являются символическими ссылками на фактический файл, который они открывают. Используя ls , как только вы найдете нужный файл, вы можете отметить его номер. Предположим, что вы заинтересованы в номере 3 Анкет

Существует другая папка, которая содержит некоторую метаинформацию об этих обработчиках. К которому вы можете просто получить доступ, выполняя

cat /proc/42/fdinfo/3

Вы получите что -то похожее на это:

pos:    569573376
flags:  0104000
mnt_id: 28

В том числе pos Линия, которая указывает нам, где именно обработчик указывает.

Тогда вам просто нужно знать размер файла, и вы идете, вы знаете как текущую позицию, так и размер файла, это все, что вам нужно для создания панели хода.

После некоторое время я подумал, что напишу этот маленький инструмент, так что мы здесь. Спасибо за чтение!

Оригинал: «https://dev.to/xowap/add-progress-bars-to-any-command-1f58»