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 puis-je savoir quel processus utilise ce fichier?

48

2 réponses

Vous pouvez utiliser la commande fuser, comme:

fuser file_name

Vous recevrez une liste des processus utilisant le fichier.

, Vous pouvez utiliser différents drapeaux avec elle, afin de recevoir une sortie plus détaillée.

Vous pouvez trouver plus d'informations dans l'article Wikipedia defuser , ou dans les pages man.

72
répondu jimm-cl 2014-07-03 13:22:56

La réponse de@jim est correcte - {[1] } est ce que vous voulez.

En outre (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 tuer le processus. (Bien sûr, si tuer le processus est ce que vous voulez, fuser peut le faire avec son option -k. Vous pouvez demander à fuser d'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 en cours d'exé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 lsof pour savoir quels processus utilisent des sockets particuliers. Un excellent outil à avoir dans votre arsenal.

19
répondu ghoti 2014-07-03 13:25:50