Estou trabalhando em um sistema incorporado com a versão do dd do busybox. Estou tentando testar uma exclusão na unidade de algum utilitário externo, no entanto, o dd não lê o disco novamente após a exclusão, mas me mostra os dados em cache.
Eu reduzi para dd como quando faço um dd inicial, vejo os dados, reinicio meu sistema para liberar o cache, apagou e, em seguida, executei o dd novamente, com todos os zeros.
No entanto, se eu dd nas configurações de fábrica, apague a unidade e dd novamente sem reiniciar, não mostrará todos os zeros até a reinicialização.
Eu li na página de manual do GNU que o dd suporta o iflag opt, com um sinalizador nocache, mas o busybox não suporta essa opção, então isso está fora de questão.
Minha pergunta é como forçar o dd a ler do disco novamente, e não do cache?
Respostas:
Você poderia tentar
que descarta todos os tipos de caches.
Para mais detalhes veja
/usr/src/linux/Documentation/sysctl/vm.txt
nodrop_caches
.(Nota: a pergunta era sobre o busybox dd, que até o momento ainda não é compatível
iflag=direct
.)fonte
/proc
sistema de arquivos está desativado em algumas configurações incorporadas do Linux.dd
eles sejam descartados no processo ao transferir grande quantidade de dados.Com base na resposta de @ sendmoreinfo:
Não afeta o cache de leitura.
fonte
A E / S direta (modo aberto
O_DIRECT
) deve funcionar, mas seu kernel e / oudd
talvez não o suporte.fonte
Um pequeno floreio para o iflag = resposta direta; forneça também uma barra de progresso:
Sem o iflag / oflag, o pv informa que está terminado e, em seguida, parece que está pendurado; mas o dd para o dispositivo ainda está funcionando no cache.
fonte