Как я могу отслеживать прогресс дд


39

Я использую следующую команду для создания загрузочной SD-карты

sudo dd bs=4m if=en_windows_10_enterprise_version_1511_x64_dvd_7224901.iso of=/dev/disk2

Есть ли способ отслеживать прогресс?


Ответы:


57

Та же самая информация, отображаемая каждую секунду в ответе klanomath, может отображаться с помощью вашей команды. Вам просто нужно ввести controlTсимвол с клавиатуры во время ddвыполнения команды.

Нажав controlTсимвол, вы отправляете тот же SIGINFOсигнал ddкоманде, которую pkill -INFO -x ddотправляет команда .


25

Начиная с coreutils 8.24, dd добавил опции статуса. Установите coreutils с Homebrew для обновления dd.

brew install coreutils
# All commands have been installed with the prefix 'g'
sudo gdd if=XXXX.iso of=/dev/diskX bs=1 status=progress 

> example:
> 139648967 bytes (140 MB, 133 MiB) copied, 304 s, 459 kB/s    

3
Не знал о coreutils, очень удобно.
SteveLambert

1
Хотя это работает, вы нивелируете увеличение скорости при использовании Raw Disk
eyoung100

8

ddСам по себе не обеспечивает индикатор выполнения. Вы можете оценить ход процесса копирования dd, добавив команду pkill -INFO .

Пример:

dd if=/dev/zero of=/dev/null bs=64m count=1000 & while pkill -INFO -x dd; do sleep 1; done

Результат:

[1] 37691
0+0 records in
0+0 records out
0 bytes transferred in 0.028923 secs (0 bytes/sec)
275+0 records in
275+0 records out
18454937600 bytes transferred in 1.029698 secs (17922667819 bytes/sec)
553+0 records in
553+0 records out
37111201792 bytes transferred in 2.048291 secs (18118129881 bytes/sec)
829+0 records in
829+0 records out
55633248256 bytes transferred in 3.068911 secs (18128009214 bytes/sec)
1000+0 records in
1000+0 records out
67108864000 bytes transferred in 3.720346 secs (18038339571 bytes/sec)
[1]+  Done                    dd if=/dev/zero of=/dev/null bs=64m count=1000

Что означает колоссальные 18,1 ГБ / с.


Каковы технические характеристики компьютера, на котором вы запускали эту команду?
user3439894

@ user3439894 3,5 ГГц i7 iMac. Зачем?
klanomath

Было просто любопытно из-за выходных данных в байтах / сек, которые, кстати, на самом деле составляют 16,8 ГБ / с (с округлением в большую сторону), поскольку они являются вычислениями базы 2, а не базы 10.
user3439894

5

Прежде всего, установите Homebrew Package Manager . Затем вы должны установить pvи dialogс этой командой:

brew install pv dialog

Затем вы можете запустить эту команду, чтобы получить индикатор выполнения с помощью команды:

dd if=disk.img bs=1m | pv disk.img | dd of=/dev/diskX bs=1m

но обязательно замените disk.imgпуть к изображению и diskXидентификатор диска вашей SD-карты. Если вы хотите что-то более графическое, вы можете попробовать это:

(dd if=disk.img bs=1m | pv -n disk.img | dd of=/dev/diskX bs=1m conv=notrunc,noerror) 2>&1 | dialog --gauge "Writing image to SD card..." 10 70 0

Источник: /ubuntu//a/516724/765767


3

Вы можете нажать Control+ tво время выполнения ddкоманды или для хорошего индикатора выполнения вы можете установить pv(pipe viewer) через Homebrew:

brew install pv

и затем выполните:

sudo dd if=disk-image.img | pv | sudo dd of=/dev/disk2

или (зная размер изображения, 16 ГБ в этом примере):

dd if=disk-image.img | pv -s 16G | dd of=/dev/disk2


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

(передаваемые данные, прошедшее время, скорость, индикатор выполнения и расчетное время):

    1.61GiB 0:12:19 [2.82MiB/s] [===>                 ] 10% ETA 1:50:25

2

Это просто! Для macOS High Sierra и ниже просто запустите цикл while, и он будет работать, пока не закончится. Просто убедитесь, что сделали код ниже в другом окне:

Приведенный ниже код будет работать сразу после загрузки прошивки или в полнофункциональной ОС.

while kill -0 $PID; do $(caffeinate -t 10) $(kill - INFO $PID) echo “still copying file” “$(date)”; done

^ Чтобы поддерживать бодрствование машины (кофеина) без использования «homebrew» или инструментов, недоступных в стандартной Mac OS X, поскольку для homebrew требуется интернет и реальная ОС для его установки.

ПРИМЕЧАНИЕ . Выше необходимо заменить PID идентификатором процесса, и он будет постоянно отображать прогресс


Я также обнаружил, что нужно держать машину в активном состоянии, чтобы вы не возвращались ко сну и постоянно ее будили.
Дон-Пьер Халфуэй

Приведенный выше скрипт сообщает вам дату, дает вам статистику ее копирования и держит ее бодрствующей каждые 10 секунд
Don-Pierre Halfaway

Лучше всего использовать для терминала на Mac, когда вы не в полной версии операционной системы. Но внутри Firmaware / bios. Определенно, решение, которое нужно помнить
Дон-Пьер Халфуэй

Какова цель $(...)? Я знаю, что они вообще делают, мне просто интересно, почему вы их здесь используете?
nohillside

чтобы избежать пробелов и заставить команду выполнить все в одной строке. Я уверен, что мог бы удвоить «(» и «)», но я хотел, чтобы люди увидели варианты, доступные в непрофессиональном подходе
Don-Pierre Halfaway
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.