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

Ответы:

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    
davidcondrey
источник
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 ГБ / с.

klanomath
источник
Каковы технические характеристики компьютера, на котором вы запускали эту команду?
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

pixelomer
источник
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
Guglie
источник
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