Eu tenho um diretório no meu sistema Debian. O diretório é:
root@debian:/3/20150626# stat 00
File: `00'
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: fe00h/65024d Inode: 4392587948 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-06-25 20:00:00.086150791 -0400
Modify: 2015-07-07 12:39:04.174903234 -0400
Change: 2015-07-07 12:39:04.174903234 -0400
Birth: -
O diretório está vazio:
root@debian:/3/20150626# ls -al 00
total 0
drwxr-xr-x 3 root root 6 Jul 7 12:39 .
drwxr-xr-x 3 root root 23 Jul 7 12:56 ..
Mas meu sistema não pensa assim:
root@debian:/3/20150626# rm -rf 00
rm: cannot remove `00': Directory not empty
Não sei por que isso aconteceria nem consigo encontrar uma maneira de seguir em frente. Alguém pode fornecer assistência?
Nenhuma das perguntas anteriores que eu consegui localizar resolveu esse problema específico. Mas, para abordar algumas das perguntas que eu já vi em posts semelhantes:
a.) A pasta foi criada por um processo em execução, que criou muitas pastas antes e essas pastas foram removidas várias vezes antes. Este específico está preso no limbo.
b.) Não deve haver nada escrito neste diretório agora. Eu verifiquei muitas vezes e a ls -al
saída sempre não retorna nada.
c.) Verifiquei lsof e não há nada aberto para este diretório:
root@debian:/3/20150626# lsof 00
root@debian:/3/20150626#
d.) rm
não tem alias para mais nada. É bem parecido com o Debian ... nada de especial feito com nenhum dos principais programas do Bash, como rm
etc.
e.) Renomear é permitido, mas ainda não é possível excluir:
root@debian:/3/20150626# mv 00 delete_me
root@debian:/3/20150626# ls -al
total 0
drwxr-xr-x 3 root root 30 Jul 7 13:45 .
drwxr-xr-x 7 root root 105 Jul 7 12:57 ..
drwxr-xr-x 3 root root 6 Jul 7 12:39 delete_me
root@debian:/3/20150626# rm -rf delete_me
rm: cannot remove `delete_me': Directory not empty
root@debian:/3/20150626# ls -al delete_me/
total 0
drwxr-xr-x 3 root root 6 Jul 7 12:39 .
drwxr-xr-x 3 root root 30 Jul 7 13:45 ..
** Observe, a partir de agora referido como "delete_me" desde que eu o renomeei e vou apenas seguir o fluxo.
f.) Este é o único diretório retornado quando eu o executo find
.
root@debian:/3/20150626# find / -type d -name delete_me
/3/20150626/delete_me
root@debian:/3/20150626# find delete_me
delete_me
g.) lsattr não mostra nada:
root@debian:/3/20150626# lsattr
---------------- ./delete_me
lsattr
se existem atributos especiais atribuídos a ele?stat
saída (e / ou tentar novamente o rmdir)?Respostas:
Encontrei a resposta. Algo estava errado com a ligação, como sugeriu @JeffSchaller. A solução é executar xfs_check para verificar se os links estão incorretos e, em seguida, xfs_repair para corrigi-los.
mount
para visualizar o nome do dispositivo. O meu é/dev/mapper/vg3-lv3
umount /3
xfs_check /dev/mapper/vg3-lv3
que retornou o seguinte:link count mismatch for inode 4392587948 (name ?), nlink 3, counted 2
link count mismatch for inode 12983188890 (name ?), nlink 1, counted 2
xfs_repair /dev/mapper/vg3-lv3
que indicava que os links foram corrigidos:resetting inode 4392587948 nlinks from 3 to 2
resetting inode 12983188890 nlinks from 1 to 2
Acontece que eu tinha outro inode que estava vinculado incorretamente.
Obrigado por toda a ajuda, mas usando a magia negra do xfs_repair, meu problema está resolvido.
fonte
Você tentou verificar se os atributos da pasta / diretório possuem o atributo " i " - imutável está ativo! Verifique com o comando lsattr para verificar se a pasta / diretório tem o atributo " i " ativado se você desativá-lo com "*
* "Com isso, você pode executar a tarefa que deseja.
fonte
-i
atributo em um arquivo / pasta não impede que ele apareça, no entanto, onde você vê que-i
está definido? A saída do OP está indicando o oposto