A unidade USB foi retirada (não desmontada), mas ainda consigo acessar um arquivo nela. Como faço para detectar essa situação programaticamente?

1

Eu estou em um cubie board (um computador de placa única, como um Raspberry Pi) rodando um derivado Debian chamado cubian

Linux Cubian 3.4.79-sun4i #1 PREEMPT Wed Feb 25 08:50:31 UTC 2015 armv7l GNU/Linux

As unidades USB são montadas automaticamente em um subdiretório de / media via udevil .

Estou tentando gerenciar isso como um quiosque (o usuário não tem acesso a um sistema de janelas, etc.), portanto, preciso responder às situações de maneira programática. Recentemente, durante o teste, meu código emitiu um erro indicando que havia mais de um diretório em / media. Eu ssh'd em, e, de fato, havia dois diretórios lá. Eu disse a mim mesmo "sim, mas um é apenas o restante obsoleto de uma unidade não-corretamente desmontada, então o diretório estará vazio [eu vi esse caso antes], e eu só preciso adicionar código para verificar se" .

Para minha surpresa, o diretório não estava vazio, e não só consegui uma listagem, como também consegui abrir e ler o conteúdo de um arquivo. Esta questão descreve uma situação semelhante.

Suponho que isso seja algum tipo de cache que estou acessando. Existe uma maneira de detectar programaticamente essa situação?

Não estou preocupado em limpar os diretórios tanto quanto sei qual deles realmente corresponde a uma unidade montada fisicamente.

Além disso, infelizmente, eu não sei como reproduzir isso - eu tentei matar o udevil e montá-lo manualmente com mount e depois puxá-lo para fora, e os arquivos desapareceram.

Se houvesse uma maneira confiável de reproduzi-lo, eu poderia testar algumas coisas (como ver se um comando touch falha, mas não trava, talvez?), então isso também seria uma resposta útil.

    
por msouth 17.03.2017 / 13:52

1 resposta

0

A única maneira de isso estar acontecendo é se algo foi gravado no arquivo enquanto a unidade foi desmontada. Se não houver nada instalado, o sistema Linux verá as pastas em / media como pastas regulares com arquivos regulares.

No Linux é perfeitamente possível usar um diretório como um diretório normal e o ponto de montagem para discos ou unidades de rede, um de cada vez.

Editar:

o efeito colateral de cache mencionado no outro post pode ser resolvido fazendo $ sync antes de desmontar. O que eles descrevem é o cache sendo liberado após a desmontagem, com o efeito de que o arquivo é gravado na pasta normal, como descrevi antes.

Por favor, não desista sem explicar porquê.

    
por 17.03.2017 / 14:58