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