Recherche de site Web

Correction de l’erreur « rm : Impossible de supprimer le fichier - Périphérique ou ressource occupée »


Si vous avez déjà essayé de supprimer un fichier ou un répertoire sous Linux à l’aide de la commande rm et que vous avez vu l’erreur :

rm: cannot remove 'file-or-directory': Device or resource busy

Ne vous inquiétez pas, il s’agit d’un problème courant qui signifie simplement que le fichier ou le répertoire que vous essayez de supprimer est actuellement utilisé par le système ou par un processus en cours d’exécution.

Pourquoi cette erreur se produit

Lorsque vous voyez le message « périphérique ou ressource occupé », cela signifie que le fichier ou le répertoire est en cours d’utilisation. Linux vous empêche de supprimer les fichiers en cours d’utilisation pour éviter de casser des choses ou de causer des pertes de données.

Voici quelques raisons courantes pour lesquelles cela se produit :

  • Vous essayez de supprimer un répertoire dans lequel se trouve actuellement votre terminal.
  • Un programme ou un processus utilise le fichier ou le répertoire.
  • Un périphérique (comme une clé USB ou un support réseau) est toujours monté et utilisé.

Dans cet article, nous allons vous expliquer pourquoi cela se produit et comment vous pouvez y remédier.

1. Quittez l’annuaire

Pour savoir où vous en êtes dans le système de fichiers, vous pouvez utiliser la commande pwd, qui signifie « print working directory », et elle indique votre emplacement actuel.

pwd

Si la sortie indique que vous êtes à l’intérieur du dossier que vous souhaitez supprimer, vous devez d’abord en sortir en basculant vers votre répertoire personnel (ou tout autre emplacement sûr) à l’aide de la commande cd :

cd ~

Une fois que vous avez quitté le répertoire, vous pouvez essayer de le supprimer à nouveau à l’aide de la commande rm :

rm -rf /path/to/the/directory

Cette fois, Linux ne bloquera pas la commande car votre terminal n’utilise plus ce répertoire.

2. Vérifiez ce qui utilise le fichier ou le répertoire

Si Linux indique qu’un fichier ou un répertoire est « occupé », cela signifie qu’un programme ou un processus l’utilise toujours. Avant de pouvoir le supprimer, vous devez savoir ce qui l’utilise et arrêter cette utilisation.

Pour ce faire, vous pouvez utiliser une commande appelée lsof, qui signifie « list open files », elle vous aide à voir quels processus conservent votre fichier ou répertoire.

lsof +D /path/to/directory

Il répertoriera tous les processus qui utilisent des fichiers à l’intérieur de ce répertoire. Vous verrez une sortie indiquant quelle commande l’utilise, l’ID de processus (PID), l’utilisateur qui l’exécute, etc.

Par exemple, vous pouvez voir quelque chose comme :

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash     4312  user   cwd  DIR  8,1     4096     2   /mnt/data

Une fois que vous les avez identifiés, vous pouvez fermer les programmes associés ou arrêter les processus à l’aide de la commande fuser.

fuser -v /path/to/directory

Pour tuer tous les processus utilisant le répertoire (à utiliser avec prudence) :

fuser -k /path/to/directory

3. Démontez l’appareil (s’il s’agit d’un répertoire monté)

Parfois, le répertoire que vous essayez de supprimer est en fait utilisé comme point de montage, ce qui signifie qu’un périphérique de stockage, tel qu’une clé USB, un disque dur externe ou un partage réseau (comme NFS), est actuellement attaché (ou « monté ») à cet emplacement dans le système de fichiers.

Lorsqu’un périphérique est monté, Linux le traite comme une partie du système de fichiers principal, mais vous ne pouvez pas supprimer le répertoire du point de montage tant que le périphérique est encore en cours d’utilisation. C’est pourquoi vous obtenez l’erreur « appareil ou ressource occupée ».

Pour voir si votre répertoire est réellement monté, exécutez :

mount | grep /path/to/directory

Si la commande affiche une ligne de sortie avec votre chemin, cela signifie que le répertoire est utilisé comme point de montage.

Par exemple, vous pouvez voir quelque chose comme ceci, ce qui signifie qu’un périphérique USB est monté sur /mnt/usb.

/dev/sdb1 on /mnt/usb type vfat (rw,nosuid,nodev)

Une fois que vous avez confirmé que l’appareil est monté, vous devez le démonter avant de supprimer le répertoire.

umount /mnt/usb

Parfois, même après avoir essayé de démonter, le message « ressource occupée » peut toujours s’afficher, ce qui signifie qu’un processus utilise toujours l’appareil.

Dans ce cas, vous pouvez essayer un démontage différé, qui détachera immédiatement le périphérique du système de fichiers, mais attendez pour le supprimer complètement jusqu’à ce que tous les processus cessent de l’utiliser.

umount -l /mnt/usb

Si le démontage paresseux ne fonctionne pas non plus et que vous êtes sûr que rien d’important n’utilise l’appareil, vous pouvez essayer un démontage forcé :

umount -f /mnt/usb

Avertissement : Les démontages forcés peuvent entraîner une perte de données si le périphérique est toujours en cours d’écriture. N’utilisez cette option que si vous êtes absolument sûr que vous pouvez le faire en toute sécurité, par exemple si l’appareil est bloqué et qu’il vous suffit de le retirer.

Une fois l’appareil démonté, supprimez le répertoire.

rm -rf /mnt/usb
Conclusion

L’erreur « périphérique ou ressource occupée » signifie généralement que quelque chose utilise toujours le fichier ou le répertoire. Avec quelques vérifications simples, telles que quitter le répertoire, vérifier les processus en cours d’exécution ou démonter des périphériques, vous pouvez résoudre le problème rapidement.

Assurez-vous toujours qu’il est possible d’arrêter les processus ou de démonter des périphériques avant de le faire. Une fois que c’est réglé, votre commande rm devrait fonctionner comme prévu.

Articles connexes: