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

4

Cuando intento borrar un archivo

sudo rm -rf filename

Me escupen de vuelta:

rm: filename: Resource is busy

¿Cómo puedo anular esto? Sé a ciencia cierta que el recurso no está ocupado. ¡Solo quiero eliminarlo!

CodeGuy
fuente
3
El sistema operativo lo dice. ¿Debemos confiar en la computadora o en los humanos? ¿Tiene el archivo seleccionado en alguna GUI? ¿Es realmente un directorio (notando que usó la -rbandera)? ¿Quizás está abierto en un proceso de fondo o zombie?
arroz
2
¿Entonces está seguro de que el archivo no está siendo utilizado por un proceso que se inicia cuando se inicia su sistema? La clave para ser un buen solucionador de problemas es no confiar en nada de lo que le dicen. No confío en ti y no confío en tu sistema operativo. Con un campo de juego nivelado, podemos avanzar un poco en la comprensión de lo que está sucediendo. Si aceptamos todas sus suposiciones como verdaderas, no avanzaremos más de lo que ya lo ha hecho y miraremos dónde está ahora.
arroz
1
¡Está ocupado! El sistema operativo no va a tener una barra de eso. Además, está ignorando lo que se dice y está volviendo a "responder la pregunta". ¿Ha intentado arrancar su sistema desde una imagen en una unidad flash o lo que sea, montando la partición en cuestión y eliminando el archivo?
arroz
2
Entonces entendí mal la última parte de tu pregunta donde dices "¡Solo quiero eliminarla!" No pareces abierto a consejos sobre cómo lograr esto, así que te recomiendo que sigas tu propio camino sin pedir ayuda.
arroz
44
Hubiera sido más entretenido para los futuros lectores si CodeGuy no hubiera eliminado todos sus comentarios groseros e insultantes. Lo anterior se lee como si tuviera una discusión conmigo mismo ... =)
paddy

Respuestas:

9

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 estos motivos:

  • el archivo está siendo utilizado por otro proceso
  • hay un problema con su sistema de archivos

Como desea eliminar el archivo, mi sugerencia ha sido iniciar la máquina desde una imagen de Linux, montar su sistema de archivos y eliminar el archivo.

arrozal
fuente
Podría agregarse que la "Vista previa" de Apple es una razón común para que los archivos aleatorios estén "ocupados" si los previsualiza con la barra espaciadora "QuickLook". Absolutamente lo odio y me está volviendo loco. También sugeriría agregar el archivo lsof y cómo proceder: elimine el PID y luego elimine el archivo. También se podría escribir un script de eliminación de núcleo duro, que hace esto. Pero sí, eso está más allá de responder una pregunta simple como esta;)
rwenz3l
5

Intenta lsof filenamever si está realmente ocupado. Una de las causas más comunes de esto es que está tratando de eliminar un directorio en el que tiene abierto un shell.

Paul Tomblin
fuente
44
¿Intentaste el comando? Unix generalmente no miente sobre las cosas solo para meterse contigo.
Paul Tomblin
1

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

davidgo
fuente
1

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

Es posible que un archivo en un dispositivo extraíble esté en uso durante un bloqueo del sistema y el sistema continuará pensando que el archivo todavía está en uso, incluso si lsof no devuelve nada y el archivo no está realmente en uso. Eliminar .DS_store no tiene ningún efecto.

Temporalmente, se puede cambiar el nombre del archivo o carpeta si es necesario. Luego, elimine la utilidad de disco y repare los permisos de disco / reparación en el volumen.

glifo
fuente
1

Todas las anteriores. El sistema no suele mentir, lo que significa que a veces lo hace.

Siga 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 fuente TrueType .ttf en un "disco extraño" en una unidad conectada a la red y, por lo tanto, no es probable que el sistema lo abra al inicio. El comando lsof no mostró nada. Un reinicio de la Mac no cambió nada. Apagar la única otra computadora en la red que posiblemente podría estar usando el archivo no cambió nada.

Disk Utility no pudo hacer nada con la unidad, porque no era solo un dispositivo extraíble, era 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 eliminarlo. Después de copiar, no pude eliminar el original porque todavía estaba "ocupado".

Me conecté a la unidad conectada a la red e intenté "verificar" el "disco extraño" pero la verificación falló. Pero ahora pude eliminar el archivo original, en Finder, sin usar sudo o rm -f ni nada de eso. Ya no estaba "ocupado".

marty39
fuente
1

Lo más fácil que puedes hacer es

lsof +D /path/in/question

Obtendrá una lista de procesos que tienen un control sobre ese proceso.

Mata los procesos que se enumeran

kill -9 <numberOfProcessID>

Obviamente sin el <'s

Beckah
fuente
0

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

Reiniciar el cliente no ayudó. No pude cambiar de rama. No pude esconderme. No podía simplemente confirmar el archivo. Estaba atorada.

Entonces me di cuenta de que podía acceder al servidor directamente. Allí pude ejecutar el archivo y luego verifiqué una nueva versión. De vuelta en mi cliente, todo estuvo bien instantáneamente.

En caso de que sea de utilidad para alguien más que encuentre este hilo como yo lo hice.

Christopher Werby
fuente
0

Encienda la utilidad de disco y verifique si hay una imagen montada que corresponde a ese nombre de directorio. Expulse la imagen y el directorio desaparecerá.

Martins
fuente
0

Mis 2 centavos Tuve el mismo problema: estaba usando el terminal para copiar algunos archivos a una ubicación temporal en un recurso compartido de Drobo. Me tomó demasiado tiempo, así que decidí procesarlos de otra manera, y ^ C el comando cp y borré los archivos temporales.

Uno de los archivos permaneció. Cuando intento borrarlo, ya sea a través de la línea de comandos o Finder, recibo el The operation can’t be completed because the item “123.mp4” is in use.mensaje del Finder o Resource busydel terminal.

La parte divertida es que soy capaz de golpear el archivo. Puedo copiar otro archivo en él, y cat > 123.mp4con cualquier trabajo sin sentido. El tamaño del archivo incluso refleja los cambios que hice.

lsof 123.mp4 no devuelve nada

La única forma en que pude deshacerme de este archivo zombie malvado fue desmontar el recurso compartido y volver a montarlo.

Rafael Santos
fuente