não pode excluir o arquivo com rm -rf

1

Ao tentar excluir um diretório com "rm -rf", continuei recebendo "diretório não vazio". Confuso, eu olhei por que e parece que eu tenho um arquivo "zumbi" preso lá. Não tenho ideia de como excluí-lo. O fdisk é minha única solução?

# rm -rf noc
rm: cannot remove directory 'noc/INBOX/#msgs': Directory not empty

# rm -rf noc/INBOX/#msgs/000201E5.eml 

# rm -rf noc
rm: cannot remove directory 'noc/INBOX/#msgs': Directory not empty

# rm  noc/INBOX/#msgs/000201E5.eml 
rm: cannot remove 'noc/INBOX/#msgs/000201E5.eml': No such file or directory

# cd noc/INBOX/#msgs/
# ls -la
ls: cannot access 000201E5.eml: No such file or directory
total 2248
drwx------ 2 root root 2293760 2013-08-27 21:55 .
drwx------ 3 root root    4096 2013-08-27 21:55 ..
-????????? ? ?    ?          ?                ? 000201E5.eml

# ls -iN | cat -A
6346412 000201E5.eml$

# find . -inum 6346412 -exec rm -i {} \;
find: './000201E5.eml': No such file or directory

# unlink 000201E5.eml 
unlink: cannot unlink '000201E5.eml': No such file or directory
    
por Pierre 11.10.2013 / 19:53

1 resposta

3

Você deve começar por desmontar e usar fsck para verificar a corrupção do sistema de arquivos.

Se isso não for corrigido, tente examinar o sistema de arquivos manualmente.

O comando unlink simplesmente chama a função unlink() do sistema. Como ele retorna o erro No such file or directory , você pode começar observando exatamente o que a estrutura do diretório diz sobre o arquivo.

ls usa a chamada readdir() e retorna um erro ao tentar ler a entrada dir. Você teria que usar a chamada getdents() diretamente para ler o diretório. Felizmente, há um exemplo completo em man 2 getdents , que você pode compilar e usar sem precisar modificar nada.

    
por 11.10.2013 / 21:38

Tags