J'ai essayé de supprimer un fichier sous Linux en utilisant rm -rf file_name, mais j'ai obtenu l'erreur:
rm: file_name not removed. Text file busy
Comment puis-je savoir quel processus utilise ce fichier?
Réponses:
Vous pouvez utiliser la fusercommande, comme:
fuser file_name
Vous recevrez une liste des processus utilisant le fichier.
Vous pouvez utiliser différents indicateurs avec lui, afin de recevoir une sortie plus détaillée.
Vous pouvez trouver plus d'informations dans l'article Wikipédia de l' unité de fusion ou dans les manpages.
fuserimplémentations ne sont pas identiques ou ne fonctionnent pas de la même manière. Même si elle -iest définie dans POSIX, l'implémentation particulière que vous utilisez n'a pas nécessairement les mêmes options que celles décrites dans l'article Wikipédia. Par exemple, j'utilise AIX en ce moment, et le fuserdisponible dans ce système n'a pas non plus l' -ioption.
fuserni lsofne travaillaient pour moi sur un invité virtualbox. Cette réponse m'a sauvé.
La réponse de @ jim est correcte - fuserc'est ce que vous voulez.
De plus (ou alternativement), vous pouvez utiliser lsofpour obtenir plus d'informations, y compris le nom d'utilisateur, au cas où vous auriez besoin d'une autorisation (sans avoir à exécuter une commande supplémentaire) pour arrêter le processus. (Bien sûr, si vous voulez tuer le processus, vous fuserpouvez le faire avec son -koption. Vous pouvez fuserutiliser d'autres signaux avec l' -soption - consultez la page de manuel pour plus de détails.)
Par exemple, avec une tail -F /etc/passwdexécution dans une fenêtre:
ghoti@pc:~$ lsof | grep passwd
tail 12470 ghoti 3r REG 251,0 2037 51515911 /etc/passwd
Notez que vous pouvez également utiliser lsofpour découvrir quels processus utilisent des sockets particuliers. Un excellent outil à avoir dans votre arsenal.
lsof | head -1pour voir tous les en-têtes.
lsof | grep -E "PID|<your_process_name>"affiche à la fois la 1ère ligne et le processus que vous souhaitez interroger.
treequelque chose de stdin? Si oui, que fait-il avec cette entrée?
tree, non lsof. Pour autant que je sache, treene lit pas à partir de l'entrée standard, donc la sortie de lsofest ignorée lorsque vous exécutez lsof | tree .... Si c'est correct, alors lsof | tree MyFoldest le même que tree MyFold, qui affiche simplement le contenu mais pas quels fichiers sont ouverts par un processus.