GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je savoir quels fichiers un processus a ouverts ?

Solution 1 :

J'aime lsof , mais je pense que c'est exagéré pour une simple question comme celle-ci. Le /proc filesystem contient tout ce que vous voulez savoir. Peut-être qu'un exemple serait le mieux :

# ps ax|grep tail
 7196 pts/4    S+     0:00 tail -f /var/log/messages
 8773 pts/0    R+     0:00 grep tail
# ls -l /proc/7196/cwd
lrwxrwxrwx 1 insyte insyte 0 2009-07-29 19:05 /proc/7196/cwd -> /home/insyte
# ls -l /proc/7196/fd
total 0
lrwx------ 1 insyte insyte 64 2009-07-29 19:05 0 -> /dev/pts/4
lrwx------ 1 insyte insyte 64 2009-07-29 19:05 1 -> /dev/pts/4
lrwx------ 1 insyte insyte 64 2009-07-29 19:02 2 -> /dev/pts/4
lr-x------ 1 insyte insyte 64 2009-07-29 19:05 3 -> /var/log/messages

Donc, comme vous pouvez le voir, le /proc/$PID Le répertoire contient un lien symbolique appelé "cwd" qui relie le CWD du processus. Il en va de même pour les descripteurs de fichiers ouverts répertoriés dans /proc/$PID/fd .

Le /proc/$PID La hiérarchie contient une mine d'informations sur tous les processus en cours d'exécution. Ça vaut le coup de fouiner !

Solution 2 :

Si vous avez la commande lsof disponibles [que la plupart des saveurs *nix font] que vous utiliseriez :

lsof -p NNN

pour lister les fichiers ouverts par le processus NNN. Je n'ai pas utilisé BSD depuis un moment mais de mémoire fuser est un proche parallèle à lsof.

Je ne suis pas sûr d'une commande pour trouver le cwd d'un processus, mais sous Linux, cwd est lié symboliquement au répertoire /proc du processus, c'est-à-dire. /proc/NNN/cwd.

Solution 3 :

si vous connaissez le processus PID, vous pouvez simplement émettre un

lsof | grep YOURPID

Rapide et facile à retenir.

ou

lsof -c yourprogramexecutable

Solution 4 :

Essayez lsof s'il est installé sur votre système

D


Linux
  1. Comment vérifier quels signaux un processus écoute ?

  2. Comment puis-je savoir si je suis dans un écran ?

  3. Comment puis-je déterminer quel processus a un fichier ouvert sous Linux ?

  4. Que faire lorsque Ctrl + C ne peut pas tuer un processus ?

  5. Comment fermer ou (dissocier ?) un port laissé ouvert par une application malveillante ?

Comment puis-je savoir sous Linux quel processus a envoyé un signal à mon processus

Comment puis-je obtenir ce que ma fonction principale a renvoyé?

Comptage des fichiers ouverts par processus

Comment définir les fichiers ouverts nginx max ?

Comment empêcher un processus d'écrire des fichiers

Comment savoir quel processus a un port spécifique ouvert sous Linux ?