Как сделать команду dd многословной? [Дубликат]

На этот вопрос уже есть ответ:

Я хочу сделать загрузочный USB-носитель путем клонирования изображения. Я провел некоторое исследование и не нашел удовлетворительного способа заставить dd предоставить некоторую обратную связь с консолью о том, как продвигается прогресс.

Есть ли способ, встроенный в команду, сделать это, кроме опроса PID с помощью команды ps?

34
задан 17.04.2020, 14:11

2 ответа

Если вы прочитаете man dd, это отсылает вас к info coreutils 'dd invocation', в котором, в частности, говорится:

Посылка сигнала INFO в работающий процесс dd заставляет его печатать статистику ввода / вывода стандартная ошибка, а затем возобновить копирование. В приведенном ниже примере dd выполняется в фоновом режиме для копирования 10 миллионов блоков. Команда kill выводит промежуточную статистику ввода / вывода, а когда dd завершается нормально или прерывается сигналом SIGINT, она выводит окончательную статистику.

 $ dd if=/dev/zero of=/dev/null count=10MB & pid=$!
 $ kill -s INFO $pid; wait $pid
 3385223+0 records in
 3385223+0 records out
 1733234176 bytes (1.7 GB) copied, 6.42173 seconds, 270 MB/s
 10000000+0 records in
 10000000+0 records out
 5120000000 bytes (5.1 GB) copied, 18.913 seconds, 271 MB/s

В системах, в которых отсутствует сигнал INFO, dd реагирует на сигнал USR1, если не установлена ​​переменная среды POSIXLY_CORRECT.

Вы также можете попробовать status=progress option:

[~]$ dd if=/dev/zero of=/dev/null count=10MB status=progress
4708234752 bytes (4.7 GB, 4.4 GiB) copied, 4 s, 1.2 GB/s
10000000+0 records in
10000000+0 records out
5120000000 bytes (5.1 GB, 4.8 GiB) copied, 4.3516 s, 1.2 GB/s
[~]$ 
36
ответ дан 17.04.2020, 14:11
  • 1
    хорошее решение. Обратите внимание на то, что количество только в демонстрационных целях и для меня, МБ не работал. Это ожидает число. Также у меня нет опции прогресса для состояния в моем dd. Острота для наблюдения dd была бы ' в то время как уничтожают-0$pid; действительно уничтожьте-s ИНФОРМАЦИОННЫЙ $pid; done' – Doval 17.04.2020, 14:12
  • 2
    status=progress, вероятно, что 99,99% из всех ищет, но читает об ИНФОРМАЦИИ, и сигналы USR1 хорошо, напоминает мне, как мало я знаю обо всем – BrenBarn 17.04.2020, 14:12

Есть несколько решений, доступных через поиск Google.

Из http://www.cyberciti.biz/faq/linux-unix-dd-command-show-progress- while-coping/

(pv -n /dev/sda | dd of=/dev/sdb bs=128M conv=notrunc,noerror) 2>&1 | dialog --gauge "Running dd command (cloning), please wait..." 10 70 0

enter image description here

Возможно, вам придется установить диалог и pv

sudo apt-get install pv dialog
25
ответ дан 17.04.2020, 14:12

Теги

Похожие вопросы