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?
Vous pouvez utiliser la fuser
commande, 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 man
pages.
fuser
implémentations ne sont pas identiques ou ne fonctionnent pas de la même manière. Même si elle-i
est 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 lefuser
disponible dans ce système n'a pas non plus l'-i
option.fuser
nilsof
ne travaillaient pour moi sur un invité virtualbox. Cette réponse m'a sauvé.La réponse de @ jim est correcte -
fuser
c'est ce que vous voulez.De plus (ou alternativement), vous pouvez utiliser
lsof
pour 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, vousfuser
pouvez le faire avec son-k
option. Vous pouvezfuser
utiliser d'autres signaux avec l'-s
option - consultez la page de manuel pour plus de détails.)Par exemple, avec une
tail -F /etc/passwd
exécution dans une fenêtre:Notez que vous pouvez également utiliser
lsof
pour découvrir quels processus utilisent des sockets particuliers. Un excellent outil à avoir dans votre arsenal.la source
lsof | head -1
pour 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.Comme le montre l'image ci-jointe:
la source
tree
quelque chose de stdin? Si oui, que fait-il avec cette entrée?tree
, nonlsof
. Pour autant que je sache,tree
ne lit pas à partir de l'entrée standard, donc la sortie delsof
est ignorée lorsque vous exécutezlsof | tree ...
. Si c'est correct, alorslsof | tree MyFold
est le même quetree MyFold
, qui affiche simplement le contenu mais pas quels fichiers sont ouverts par un processus.