Je suis sur Yosemite (10.10.1) et j'ai remarqué la fâcheuse habitude de ne pas vouloir vider la corbeille -- il n'arrête pas de se plaindre que The operation can’t be completed because the item “whatever” is in use.
Ça commence à m'énerver - je peux aller à .Trash
et enlever des trucs à la main, mais qu'est-ce qui se passe ? Une fois qu'un fichier n'est plus utilisé et a été supprimé, pourquoi le système d'exploitation ne reconnaît-il pas qu'il n'est pas lié à une application ? Ce problème est apparu que l'application utilisée pour ce type de fichier soit toujours ouverte ou non.
Réponses
Trop de publicités?Pour savoir quel(s) fichier(s) de votre Corbeille sont utilisés, et par qui :
lsof +D ~/.Trash
Le nom de la commande dans la première colonne sera tronqué. S'il est tronqué au point de ne pas pouvoir identifier le processus, la deuxième colonne contient le nom de la commande. pid (Process ID), que vous pouvez croiser dans Activity Monitor. Vous pouvez également obtenir des informations supplémentaires en utilisant ps -p pid .
Nota:
Il a été suggéré que le commandement :
sudo rm -rf ~/.Trash
Ce n'est pas le cas !
Si un fichier est en cours d'utilisation (ce qui est le scénario sur lequel porte la question), il ne peut pas être enlevé ! Pas même par Root.
La commande suggérée peut être utile si :
- Vous êtes dans un compte administrateur (ou dans sudoers, ce que je déconseille comme une faiblesse de sécurité), et
- La seule raison pour laquelle vous ne pouvez pas supprimer le fichier est que ses permissions refusent la suppression.
En général Il existe trois raisons pour lesquelles vous n'arrivez pas à vider la poubelle, et chaque raison a son propre remède.
-
Si le fichier (ou le dossier) est verrouillé, vous pouvez soit le déverrouiller, soit maintenir la touche Option enfoncée tout en vidant la corbeille.
-
Si les permissions ne vous permettent pas de supprimer le fichier, vous pouvez soit modifier les permissions pour l'autoriser, soit utiliser la commande
sudo
pour remplacer les permissions du fichier. -
Si le fichier est utilisé, votre seul recours est de trouver le processus qui utilise le fichier et de faire en sorte qu'il cesse de l'utiliser. Dans le cas le plus simple, il suffit de réessayer après une courte attente. Il peut être nécessaire de quitter l'application de force, et le but de l'outil de gestion de l'application est d'aider les utilisateurs.
lsof
est de déterminer quelle application doit être quittée. Cependant, même Root ne peut pas supprimer un fichier qui est en cours d'utilisation.
La conclusion est que le problème "Je ne peux pas vider la poubelle" n'a pas de solution unique. Lorsque l'on vous dit que quelque chose est en cours d'utilisation, ne perdez pas de temps à essayer d'appliquer une solution qui ne correspond pas à la situation.
Je l'ai également vu suggérer que Secure Empty Trash pourrait être utile. Encore une fois, ce n'est pas le cas ! Secure Empty Trash écrase les secteurs du disque dans lesquels les données du fichier étaient stockées, mais seulement après que le fichier ait été supprimé avec succès . Si vous ne pouvez pas supprimer le fichier, pour quelque raison que ce soit, il ne sera pas supprimé ou écrasé. Si le fichier est lié par un lien dur, sa suppression ne supprime qu'un seul de ses liens. Tant qu'il reste d'autres liens, le fichier sous-jacent inode n'est pas supprimé et l'espace disque du fichier n'est pas écrasé.
Cela signifie que ce fichier est en cours d'utilisation, donc le supprimer peut affecter l'application qui l'utilise. vous pouvez utiliser lsof
o fs_usage
pour surveiller le processus qui les utilise, par ex.
$ lsof -T|grep Arial
Skype 311 auniyal txt REG 1,4 774476 499182 /Library/Fonts/Microsoft/Arial.ttf