Você poderia tentar
sync
echo 3 > /proc/sys/vm/drop_caches
que baixa todos os tipos de caches.
Para detalhes, consulte /usr/src/linux/Documentation/sysctl/vm.txt
on drop_caches
.
Estou trabalhando em um sistema embarcado com a versão busybox do dd. Eu estou tentando testar um apagamento para a unidade de algum utilitário externo, no entanto dd não lê o disco novamente após o apagamento, mas mostra-me os dados em cache.
Eu reduzi-o ao dd como quando eu faço um dd inicial, vejo os dados, reinicio o meu sistema para limpar o cache, apaguei e então corri o dd novamente ele veio com todos os zeros.
No entanto, se eu fizer dd nas configurações de fábrica, apague a unidade e faça o dd novamente sem reiniciar, não mostrarei todos os zeros até o reinício.
Eu li na página man do GNU que o dd suporta o iflag opt, com um flag nocache, mas o busybox não suporta essa opção, então isso está fora de questão.
A minha pergunta é como posso forçar o dd a ler a partir do disco novamente, e não a partir do cache?
O I / O direto (modo de abertura O_DIRECT
) deve funcionar, mas seu kernel e / ou dd
podem não suportar.
Baseado na resposta do @ sendmoreinfo:
dd if=/dev/device iflag=direct bs=1M
Não afeta o cache de leitura.
Um pequeno floreio para o iflag = resposta direta; fornecer uma barra de progresso também:
dd iflag=direct if=~/source.iso | pv | dd oflag=direct of=/dev/sdb bs=8M
Sem o iflag / oflag, os relatórios pv terminaram e, em seguida, parece que está suspenso; mas o dd para o dispositivo ainda está trabalhando no cache.