Anular "recurso está ocupado" cuando rm en Mac OS X Terminal

Cuando intento eliminar un archivo

sudo rm -rf filename 

Me vuelven a escupir:

 rm: filename: Resource is busy 

¿Cómo puedo anular esto? Sé por un hecho que el recurso no está ocupado. Sólo quiero borrarlo!

No puede anular este comportamiento.

El sistema operativo indica que está ocupado. El sistema operativo es probablemente correcto. El mensaje de error podría ser por estas razones:

  • El archivo se está utilizando realmente por otro proceso
  • Hay un problema con su sistema de archivos

Como deseas borrar el archivo, mi sugerencia ha sido iniciar la máquina desde una imagen linux, montar tu sistema de archivos y borrar el archivo.

Pruebe el lsof filename de lsof filename para ver si está realmente ocupado. Una de las causas más comunes de esto es que está intentando eliminar un directorio en el que tiene una shell abierta.

Como otros carteles dicen, si usted sabe mejor que el sistema operativo, reinicie el sistema y que lo hará olvidar. Pero realmente, saben de lo que están hablando …

Esta es una vieja pregunta pero voy a añadir mis 2 centavos, porque hay de hecho situaciones en las que un archivo no está realmente en uso, pero el sistema operativo todavía piensa que es.

Es posible que un archivo en un dispositivo extraíble esté en uso durante un fallo del sistema y el sistema continuará creyendo que el archivo todavía está en uso, incluso si lsof no devuelve nada y el archivo no está realmente en uso. La eliminación de .DS_store no tiene efecto.

Temporalmente, se puede cambiar el nombre del archivo o carpeta si es necesario. A continuación, el látigo fuera de la utilidad de disco y reparar los permisos de disco / reparación en el volumen.

Todo lo de arriba. El sistema no suele mentir, lo que significa que a veces lo hace.

Sigue leyendo, porque tuve una situación única en la que ninguna de las soluciones sugeridas anteriormente funcionó, pero logré resolver mi problema.

En mi caso, el archivo "ocupado" era un archivo de fuentes TrueType de .ttf en un "disco extraño" en una unidad conectada en red y, por lo tanto, no es probable que el sistema lo abra durante el inicio. El comando lsof no mostró nada. Un reinicio del mac no cambió nada. Apagar el único otro equipo en la red que posiblemente podría estar utilizando el archivo no cambió nada.

Disk Utility no podía hacer nada con la unidad, porque no era sólo un dispositivo extraíble, sino un dispositivo remoto, no conectado directamente a la Mac.

Copié el archivo con un nuevo nombre, porque en mi caso quería cambiarle el nombre, no borrarlo. Después de copiar no pude borrar el original porque todavía estaba "ocupado".

Inicie sesión en la unidad conectada a la red e intenté "comprobar" el "disco extraño" pero la comprobación falló. Pero ahora pude borrar el archivo original – en Finder, sin usar sudo o rm -f ni nada por el estilo. Ya no estaba "ocupado".

Lo más fácil que puedes hacer es

 lsof +D /path/in/question 

Obtendrá una lista de los procesos que tienen un asimiento en ese proceso

Eliminar los procesos que se enumeran

 kill -9 <numberOfProcessID> 

Obviamente sin los < 's

Tuve un problema similar cuando el archivo main.css se bloqueó al cambiar de una rama a otra en Git. El repo estaba en un servidor de archivos y estaba conectado con SMB. Mi cliente es un Mac que ejecuta OSX 10.10.5 (Yosemite).

Reiniciar el cliente no ayuda. No podía cambiar de rama. No pude encontrar el escondite. No pude encontrar el archivo. Estaba atorada.

Entonces me di cuenta de que podía acceder al servidor directamente. Allí, pude rm el archivo y luego checkout una nueva versión. De vuelta en mi cliente, todo estaba al instante bien.

Sólo en caso de que sea de utilidad para alguien que encuentra este hilo de la manera que lo hice.