Traté de rm -rf
una 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.lsof
parece no hacer nada por mí:lsof storage/logs/laravel.log
no devolvió nada, y lo mismo hizolsof +D storage/logs/
.umount
respondió 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
fuser
para este tipo de cosas. Enumerará qué proceso está utilizando un archivo o archivos dentro de un montaje.fuente
fuser
ayuda 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.fuser
no ayuda aquí porque el problema es encontrar todos los archivos abiertos en un árbol de directorios. Puede indicarlsof
que muestre todos los archivos y filtros, o que sea recurrente;fuser
no tiene ese modo y debe invocarse en cada archivo.fuser
obras 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,find
con o sinxargs
hará el trabajo.lsof
no estaba en mi camino mientrasfuser
estaba, lo que me permitió encontrar la ID del proceso ofensivo para matar, así que + 1 + gracias.Aquí está la solución:
ls -a
.xyz
archivovi .xyz
y mira cuál es el contenido del archivops -ef | grep username
kill -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
awk
comando toma el PIDS. Eltail
comando se deshace de la molesta primera entrada: "PID". Solía-9
matar, 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
lsof
y nofuser
fueron 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
mount
comando, es decirsudo umount path
Debido 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