PV процессный пароль

Поэтому я пытаюсь прошить SD-карту с 7 ГБ изображением, и это занимает вечность (около 15 часов плюс), поэтому я решил настроить pv чтобы я мог видеть прогресс. Проблема, с которой я сталкиваюсь, состоит в том, что, как только я ввожу команду, всплывет отчет о ходе выполнения, который мешает запросу пароля, поэтому я не могу продолжить передачу. Как это исправить?

Вот код, который я использовал.

Сначала я попробовал это:

sudo dd if=diskimage.img | pv -s 7340M | sudo dd of=/dev/disk2 bs=64k

Как только я нажимаю, появляется сообщение о прогрессе, поэтому запрос пароля заполняется этим текстом. Мне было интересно, связано ли это с использованием sudo dd для выходной стороны, так как я не должен делать это, когда не использую pv, но все примеры, которые я видел, делают это.

Затем я попытался пропустить модификатор размера, но это все же произошло. Наконец я сдался и просто вернулся к использованию dd без pvи просто проверяя прогресс с помощью Ctrl-T, но я бы очень хотел получить pv за работой.

Любая помощь приветствуется.

Кстати, когда я использую Ctrl-T, это результаты, которые я получаю. (нагрузка от использования Ctrl-T)

sudo dd if=diskimage.img of=/dev/disk2 bs=64k

load: 1.09  cmd: dd 906 uninterruptible 0.00u 0.17s
176+0 records in
175+0 records out
11468800 bytes transferred in 37.236996 secs (307995 bytes/sec)

load: 0.60  cmd: dd 906 uninterruptible 0.01u 3.92s
4573+0 records in
4572+0 records out
299630592 bytes transferred in 2322.619605 secs (129005 bytes/sec)

2 ответа

Решение

Решение этой проблемы довольно простое, станьте пользователем root перед запуском команды, потому что sudo в любом случае не передается по каналам. Итак, ваше решение таково:

# become root
sudo su
# do your stuff
dd if=diskimage.img | pv -s 7340M | dd of=/dev/disk2 bs=64k
# get back to your normal user account
exit

Поскольку команды вокруг каналов запускаются одновременно, ваши два sudo dd а также pv все начинаются одновременно.

Два sudo dd просят пароль и pv тоже начинает нажимать на триггер, все это одновременно означает, что приглашение превращается в мусор.

Чтобы решить эту проблему, вы можете использовать bash группировка команд и использование sudo на bash только:

sudo bash -c '{ dd if=diskimage.img | pv -s 7340M | dd of=/dev/disk2 bs=64K ;}'

Или используйте подоболочку:

sudo bash -c '( dd if=diskimage.img | pv -s 7340M | dd of=/dev/disk2 bs=64K )'

В обоих случаях вам будет предложено sudo пароль один раз и никакой другой формы переключения пользователей тоже не требуется.

Другие вопросы по тегам