Tecnología · GUÍA PRÁCTICA
¿rm -rf aún dice “Directory not empty”? Demuestra qué entrada reaparece
No repitas un comando destructivo hasta saber si es el mismo directorio, qué entrada queda o vuelve y si la posee un proceso, montaje, servidor NFS o controlador FUSE.

No repitas un comando destructivo hasta saber si es el mismo directorio, qué entrada queda o vuelve y si la posee un proceso, montaje, servidor NFS o controlador FUSE.
ENOTEMPTY indica que quedaba una entrada al borrar, pero no identifica al dueño. Un listado vacío puede omitir dotfiles y no prueba estado remoto o concurrente.
1. Fija la identidad del objetivo
Guarda comando exacto, stderr, estado, ruta absoluta, padre, dispositivo, inode, tipo de sistema y origen del montaje. Resuelve enlaces sin modificar y confirma que el nombre aún señala al mismo objeto.
No infieras seguridad de un ls aparentemente vacío. Puede ser otro contenedor o namespace, un bind mount puede ocultar otro árbol o el nombre pudo sustituirse entre intentos.
2. Captura todas las entradas dos veces
Lista entradas ocultas y nombres de bytes extraños sin enviar la salida a rm. Toma dos snapshots con hora, nombres, metadata y device/inode para separar un hijo estable de un nombre recreado.
ENOTEMPTY solo dice que quedaba una entrada al borrar, no por qué. Conserva el nombre exacto y patrones .nfs o .fuse_hidden antes de otra acción.
3. Clasifica al dueño de la reaparición
Para una entrada local, identifica la aplicación o tarea creadora. Para .nfs/.fuse_hidden, busca el proceso que mantiene abierto el archivo. En NFS compara vistas de cliente y servidor con el responsable.
No mates procesos ajenos ni supongas que sudo cambia el estado del sistema de archivos. Un creador o sistema remoto puede repoblar el nombre de inmediato.
4. Aplica la reparación mínima
Detén el writer probado, cierra el handle probado o pide al dueño de almacenamiento reparar el estado remoto/FUSE. Borra solo el hijo y directorio verificados, sin ampliar la ruta ni cruzar sistemas.
Si se aprueba reemplazar el directorio, registra owner, mode, ACL, labels, función de montaje y dueño de servicio. Recrear el nombre no conserva esos contratos.
5. Verifica ausencia y conserva evidencia
Repite snapshots tras borrar, espera el intervalo del writer o caché y confirma ausencia sostenida desde el mismo namespace y la vista autorizada del almacenamiento.
Registra errno original, proceso o capa responsable, acción, hashes/metadata relevantes y rollback. Escala divergencias NFS/FUSE o errores I/O recurrentes.
