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
пароль один раз и никакой другой формы переключения пользователей тоже не требуется.