Como o 'pv' sabe o tamanho do disco de destino?

4

Recentemente, zerei uma unidade com o seguinte comando:

# pv /dev/zero > /dev/sdd

Olhando para a taxa de transferência e o tempo restante de acordo com pv , calculou-se corretamente / calculou / sabia o tamanho do disco - 120 GB - desde o início da operação.

Minha pergunta é: como pv sabe disso, quando sua saída está sendo redirecionada dessa maneira?

    
por markrian 20.06.2018 / 14:25

1 resposta

3

Em man 1 pv :

Note that if the input size cannot be calculated, and the output is a block device, then the size of the block device will be used and pv will automatically stop at that size as if -S had been given.

Este "como se -S " é para evitar "nenhum espaço deixado no dispositivo" e para sair com sucesso.

Se você quer saber como é que pv pode saber o tamanho de seu stdout, a resposta é:

Não é o caso pv flui para algum fifo e então o shell lê o fifo e grava em /dev/sdd . O que acontece é que o shell faz com que o descritor de arquivo pv aponte para /dev/sdd desde o início, então o processo pode detectar que é um dispositivo de bloco, consulta sobre seu tamanho etc.

    
por 20.06.2018 / 14:39

Tags