Итак, я пытаюсь прошить 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 kbd> - t kbd>, но я действительно хотел бы получить pv
работает.
Любая помощь приветствуется.
Кстати, когда я использую ctrl kbd> - t kbd>, это результаты, которые я получаю. (нагрузка от использования ctrl kbd> - t kbd>)
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)
Решение этого довольно просто, станьте корнем перед выполнением команды потому что 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
, пароль однажды и никакая другая форма пользователя, переключающегося, требуется также.