Avez-vous déjà essayé de démonter une clé USB et reçu une erreur "Périphérique ou ressource occupé" ? Ce problème courant survient lorsqu'un processus utilise encore un fichier ou un répertoire sur le périphérique. Pour résoudre ce problème, vous devez découvrir quel processus détient la ressource. Deux utilitaires puissants pour cette tâche sont lsof et fuser.
Utilisation de lsof pour lister les fichiers ouverts
Sous Linux, presque tout est traité comme un fichier, y compris les disques, les pipes, les sockets réseau et les périphériques. La commande lsof (abréviation de "list open files") vous montre une liste détaillée de tous les fichiers ouverts et des processus qui les utilisent.
Pour voir quels processus utilisent le répertoire courant (.), vous pouvez exécuter :
pete@icebox:~$ lsof .
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
lxsession 1491 pete cwd DIR 8,6 4096 131 .
update-no 1796 pete cwd DIR 8,6 4096 131 .
nm-applet 1804 pete cwd DIR 8,6 4096 131 .
xterm 2205 pete cwd DIR 8,6 4096 131 .
bash 2207 pete cwd DIR 8,6 4096 131 .
lsof 5914 pete cwd DIR 8,6 4096 131 .
Le résultat montre la commande (COMMAND), l'ID de processus (PID) et l'utilisateur (USER) associés à chaque fichier ouvert. Avec ces informations, vous pouvez identifier les processus qui vous empêchent de démonter un périphérique.
La commande fuser
Un autre excellent outil est la commande fuser (abréviation de "file user"). Cet utilitaire identifie quels processus utilisent des fichiers, des sockets ou des systèmes de fichiers spécifiques. La commande linux fuser est un moyen rapide de voir les PID des processus accédant à une ressource particulière.
L'utilisation de l'option -v (verbose) fournit un résultat plus détaillé :
pete@icebox:~$ fuser -v .
USER PID ACCESS COMMAND
/home/pete: pete 1491 ..c.. lxsession
pete 1796 ..c.. update-notifier
pete 1804 ..c.. nm-applet
pete 2205 ..c.. xterm
pete 2207 ..c.. bash
Ici, nous pouvons voir clairement quels processus utilisent notre répertoire courant. La colonne ACCESS montre comment le fichier est utilisé (par exemple, c pour répertoire courant).
Terminer les processus avec fuser
Une fonctionnalité clé de la commande fuser est sa capacité à terminer les processus qui utilisent une ressource. L'option fuser -k envoie un signal SIGKILL à chaque processus accédant au fichier ou système de fichiers spécifié. Ceci est particulièrement utile pour démonter un périphérique occupé.
Par exemple, pour tuer tous les processus utilisant un point de montage à /mnt/usb, vous exécuteriez :
sudo fuser -k /mnt/usb
L'utilisation de fuser -k sous Linux est un moyen rapide et efficace de libérer une ressource.
fuser vs lsof
Alors, quand faut-il utiliser fuser contre lsof ?
lsofest excellent pour les investigations détaillées. Il fournit des informations exhaustives sur tous les fichiers ouverts, ce qui le rend idéal pour un dépannage complexe.fuserest plus direct. Il est parfait pour identifier rapidement et, si nécessaire, terminer les processus sur un fichier ou un point de montage spécifique. La commandefuser commandest souvent le choix le plus rapide pour résoudre les erreurs "Périphérique ou ressource occupé".
Les deux outils sont essentiels pour tout utilisateur Linux. Familiarisez-vous avec eux pour gérer efficacement les fichiers et les processus.