web-dev-qa-db-fra.com

Comment savoir quel processus utilise un fichier sous Linux?

J'ai essayé de supprimer un fichier sous Linux en utilisant rm -rf file_name, mais j'ai eu l'erreur:

rm: file_name not removed.  Text file busy

Comment savoir quel processus utilise ce fichier?

72
khris

Vous pouvez utiliser la commande fuser, comme ceci:

fuser file_name

Vous recevrez une liste de processus utilisant le fichier.

Vous pouvez utiliser différents indicateurs pour obtenir une sortie plus détaillée.

Vous pouvez trouver plus d’informations dans les article Wikipedia de fuser , ou dans les pages man.

108
jimm-cl

La réponse de @ jim est correcte - fuser 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 de commande supplémentaire) pour arrêter le processus. (Bien sûr, si tuer le processus est ce que vous voulez, fuser peut le faire avec son option -k. Vous pouvez avoir fuser utiliser d'autres signaux avec l'option -s. - Consultez la page de manuel pour plus de détails.)

Par exemple, avec un tail -F /etc/passwd s'exécutant 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 lsof pour savoir quels processus utilisent des sockets particulières. Un excellent outil à avoir dans votre arsenal.

25
ghoti