Estoy en Yosemite (10.10.1) y me he dado cuenta de la molesta costumbre de no querer vaciar la basura no deja de quejarse de que The operation can’t be completed because the item “whatever” is in use.
Esto está empezando a cabrearme - puedo ir a .Trash
y remover cosas a mano, ¿pero está pasando? Una vez que un archivo no está en uso y ha sido eliminado, ¿por qué el sistema operativo no puede reconocer que no está vinculado a ninguna aplicación? Este problema ha surgido tanto si la aplicación utilizada para ese tipo de archivo sigue abierta como si no.
Respuestas
¿Demasiados anuncios?Para saber qué archivo(s) de la Papelera está(n) en uso, y por quién:
lsof +D ~/.Trash
El nombre del comando en la primera columna será truncado. Si se trunca tanto que no se puede identificar el proceso, la segunda columna contiene el pid (ID de proceso), que puede cotejar en el Monitor de Actividad. O bien obtener información adicional utilizando ps -p pid .
Nota:
Se ha sugerido que el comando:
sudo rm -rf ~/.Trash
puede ser útil aquí. Este no es el caso.
Si un archivo está en uso (que es el escenario al que se refiere la pregunta), ¡no se puede quitar! Ni siquiera por Root.
El comando sugerido puede ser útil si:
- Usted está en una cuenta de administrador (o en sudoers, que desaconsejo como una debilidad de seguridad), y
- La única razón por la que no puede eliminar el archivo es que sus permisos deniegan la eliminación.
En general Hay tres razones por las que no puedes vaciar la basura, y cada una de ellas tiene su propia cura.
-
Si el archivo (o carpeta) está bloqueado, puedes desbloquearlo o mantener pulsada la tecla de opción mientras vacías la papelera.
-
Si los permisos no le permiten eliminar el archivo, puede cambiar los permisos para permitirlo o utilizar
sudo
para anular los permisos del archivo. -
Si el archivo está en uso, su único recurso es encontrar el proceso que está usando el archivo y hacer que deje de usarlo. En el caso más sencillo, basta con volver a intentarlo tras una breve espera. Puede ser necesario forzar el cierre de la aplicación, y el propósito de la
lsof
es determinar qué aplicación debe ser abandonada. Sin embargo, ni siquiera Root puede eliminar un archivo que está en uso.
La conclusión es que el problema "no puedo vaciar la basura" no tiene una solución única. Cuando te digan que algo está en uso, no pierdas el tiempo intentando aplicar una solución que no se ajusta a esa situación.
También he visto que se sugiere que Secure Empty Trash puede ser útil. De nuevo, ¡no es el caso! La Papelera Vacía Segura sobrescribirá los sectores del disco en los que estaban almacenados los datos del archivo, pero sólo después de que el archivo sea eliminado con éxito . Si no puedes borrar el archivo, por la razón que sea, no se borrará ni se sobrescribirá. Si el archivo tiene un enlace duro, al borrarlo sólo se elimina uno de sus enlaces. Mientras queden otros enlaces, el archivo subyacente inode no se borra y el espacio en disco del archivo no se sobrescribe.
Significa que ese archivo está en uso, por lo que eliminarlo puede afectar a la aplicación que lo está utilizando. puede utilizar lsof
o fs_usage
para controlar qué proceso los está utilizando, por ejemplo
$ lsof -T|grep Arial
Skype 311 auniyal txt REG 1,4 774476 499182 /Library/Fonts/Microsoft/Arial.ttf