Como usar o pv com o dd?

2

Estou tentando usar dd com pv para escrever um iso em um drive usb. Eu fiz:

iso="myiso.iso"; dd if="$iso" bs=1M | pv --eta --size $(ls -l "$iso" | awk '{print $5}') --progress --bytes --rate --wait > /dev/sdg

Seguindo este guia: link

No entanto, o que acontece é que a iso é "gravada" muito rapidamente de acordo com a saída de pv. Eu estou supondo que tudo é colocado em cache de disco ou similar. Então pv apenas trava. ps mostra que pv ainda está rodando, mas dd não está. Eu tentei stracing pv, mas não há saída e strace trava também! ctrl + c não tem efeito no strace. Na verdade, ele não responde aos sinais 15, 3, 2 ou 1. Esperou alguns minutos para cada sinal. Fui forçado a enviar 9.

De acordo com isto: link O binário strace é mal comportado.

Aqui estão minhas perguntas:

  1. Como posso tornar o relatório pv mais útil? Eu sei que provavelmente está fazendo o que é "deveria", ou seja, apenas relatando bytes que canaliza. Mas isso não é útil para o que eu quero saber, o que é uma estimativa aproximada para bytes escritos em usb drive, eta, etc.

  2. Por que a Strace não está respondendo a nenhum sinal? Meu palpite é que o strace aguarda uma chamada do sistema do processo que está assistindo antes de manipular o próximo sinal, o que eu consideraria um bug. Mas isso é apenas um palpite. versão de strace 4.5.20.

por cat pants 25.07.2014 / 23:18

1 resposta

4

Talvez você possa colocar dd na outra extremidade do stick e tentar evitar caches usando seus direct e sync flags.

pv "$iso" | dd bs=1M oflag=direct,sync of=/dev/sdg

Com isso você deve armazenar em cache no máximo% de blocos de dd , nesse caso 1M ... bem mais o que estiver no canal | em si, eu acho.

    
por 26.07.2014 / 01:18

Tags