A função dd parece congelar quando terminada

A função dd parece congelar quando terminada

Estou tentando copiar uma iso em um pendrive com este comando:

sudo dd bs=4M if=lubuntu-17.04-desktop-amd64.iso of=/dev/sdc status=progress 

O que é bastante simples. O iso tem 912M de tamanho. Por que o texto de saída congela aqui em vez de encerrar o programa?

956301312 bytes (956 MB, 912 MiB) copied, 11.216 s, 85.3 MB/s

Não consigo nem impedir a execução do programa com ctr-c.

Responder1

O comportamento que você vê é apenas ddsincronizar os dados no disco após a operação. Para otimizar as operações de E/S, o Linux geralmente lê dados em pedaços maiores do que os solicitados (leitura antecipada) e atrasa as gravações para que possam ser combinados (cache sujo). No final da operação, ddsincroniza o arquivo no disco ou o kernel faz isso implicitamente, e o processo permanece ativo até que todas as gravações sejam concluídas.

Se não houver outras operações massivas de IO na máquina, você poderá estimar quantos dados restam para gravar observando o valor "Dirty:" /proc/meminfo- esta é a quantidade total de dados pendentes para serem gravados no disco.

A quantidade de dados que o sistema pode deixar não gravados na memória a qualquer momento pode ser controlada com os seguintes botões de sintonia sysctl. Por padrão, apenas as proporções são usadas. Você pode definir o valor em porcentagem (proporção) ou bytes.

vm.dirty_background_ratio
vm.dirty_ratio
vm.dirty_background_bytes
vm.dirty_bytes

Você encontrará a documentação oficial para esses parâmetros aqui:

https://www.kernel.org/doc/Documentation/sysctl/vm.txt

informação relacionada