Traté de rm -rfuna carpeta, y obtuve "dispositivo o recurso ocupado".
En Windows, habría usado LockHunter para resolver esto. ¿Cuál es el equivalente de Linux? (Por favor, dé como respuesta un método simple de "desbloquear esto", y no complete artículos como este . Aunque son útiles, actualmente estoy interesado solo en ASimpleMethodThatWorks ™)

rm -rf /... felizmente eliminará todos los archivos, incluido / bin / rm.Respuestas:
La herramienta que desea es
lsof, que significa archivos abiertos de lista .Tiene muchas opciones, así que revisa la página de manual, pero si quieres ver todos los archivos abiertos en un directorio:
Eso se repetirá a través del sistema de archivos debajo
/path, así que tenga cuidado de hacerlo en grandes árboles de directorios.Una vez que sepa qué procesos tienen archivos abiertos, puede salir de esas aplicaciones o eliminarlas con el
kill(1)comando.fuente
/path. Esa es una causa de los "archivos abiertos" ocultos.lsofparece no hacer nada por mí:lsof storage/logs/laravel.logno devolvió nada, y lo mismo hizolsof +D storage/logs/.umountrespondió connot mounted.mount | grep <path>. Eso muestra que cualquiera/dev/<abc>podría estar montado en el<path>. Usesudo umount -lf /dev/<abc>y luego intente eliminar<path>. Funciona para mi. Gracias @camha veces es el resultado de problemas de montaje, por lo que desmontaría el sistema de archivos o el directorio que está tratando de eliminar:
fuente
Yo uso
fuserpara este tipo de cosas. Enumerará qué proceso está utilizando un archivo o archivos dentro de un montaje.fuente
fuserayuda solo en el caso específico cuando desea desmontar un sistema de archivos. Aquí el problema es encontrar qué está usando un archivo específico.fuserno ayuda aquí porque el problema es encontrar todos los archivos abiertos en un árbol de directorios. Puede indicarlsofque muestre todos los archivos y filtros, o que sea recurrente;fuserno tiene ese modo y debe invocarse en cada archivo.fuserobras serán listas. Intentefuser /var/log/*, si hay registros abiertos, le dirá cuáles y quién lo tiene abierto. Si un comodín simple, no funciona,findcon o sinxargshará el trabajo.lsofno estaba en mi camino mientrasfuserestaba, lo que me permitió encontrar la ID del proceso ofensivo para matar, así que + 1 + gracias.Aquí está la solución:
ls -a.xyzarchivovi .xyzy mira cuál es el contenido del archivops -ef | grep usernamekill -9 job_ids- donde job_ids es el valor de la segunda columna del contenido correspondiente al error correspondiente en la octava columnafuente
Tuve este mismo problema, construí una línea que comenzó con la recomendación @camh:
El
awkcomando toma el PIDS. Eltailcomando se deshace de la molesta primera entrada: "PID". Solía-9matar, otros podrían tener opciones más seguras.fuente
Tuve este problema cuando una prueba automatizada creó un disco ram. Los comandos sugeridos en las otras respuestas
lsofy nofuserfueron de ayuda. Después de las pruebas, intenté desmontarlo y luego eliminar la carpeta. Estuve realmente confundido por años porque no podía deshacerme de él, ¡seguía ocupando "Dispositivo o recurso ocupado" !Por accidente descubrí cómo deshacerme de un ramdisk. Tuve que desmontarlo la misma cantidad de veces que ejecuté el
mountcomando, es decirsudo umount pathDebido al hecho de que fue creado usando pruebas automáticas, se montó muchas veces, por lo que no pude deshacerme de él simplemente desmontándolo una vez después de las pruebas. Entonces, después de desmontarlo manualmente muchas veces, finalmente se convirtió nuevamente en una carpeta normal y pude eliminarlo.
¡Espero que esto pueda ayudar a alguien que se encuentre con este problema!
fuente
Experimento esto con frecuencia en servidores que tienen sistemas de archivos de red NFS. Supongo que tiene algo que ver con el sistema de archivos, ya que los archivos generalmente se llaman así
.nfs000000123089abcxyz.Mi solución típica es renombrar o mover el directorio principal del archivo, luego volver más tarde en un día o dos y el archivo se habrá eliminado automáticamente, momento en el que tengo la libertad de eliminar el directorio.
Esto suele suceder en directorios donde estoy instalando o compilando bibliotecas de software.
fuente
Refiriéndose a la pregunta anterior de Prabhat, tuve este problema en Macos High Sierra cuando abandoné un proceso de encfs, el reinicio lo resolvió, pero esto
Me mostró el proceso y el PID (columna dos).
arreglado.
fuente
-15?Si tiene el servidor accesible, intente
O, desmonte y monte de nuevo, intente
umount -l: lazy umount si enfrenta algún problema en el montaje normal.Yo también tuve este problema donde
lsof +D path: no da salidaps -ef: no proporciona información relevantefuente