Comment savoir à partir de quel dossier s'exécute un processus?

15

Dans * nix, vous pouvez utiliser pspour voir quel processus est en cours d'exécution. Mais si un exécutable a plusieurs fichiers homonimous dans un périphérique, nous ne pouvons pas comprendre d'où il a été invoqué.

Ceci est légèrement différent de ma dernière question à ce sujet. Comment puis-je connaître le chemin absolu d'un processus en cours?

Jader Dias
la source

Réponses:

20

Essaye ça:

ls -l /proc/<PID>/cwd
CENTRE
la source
7

Dérivée de la réponse de HUB:

readlink /proc/<PID>/cwd

ou même

readlink /proc/$(pgrep <program_name>)/cwd
jpaugh
la source
+1 La sortie de readlinkpeut être mieux analysée dans un script.
Marco Leogrande
2

Vous ne pouvez pas dire où a été invoqué un processus à partir , seulement où il en est . Regardez le cwdlien ("répertoire de travail actuel") au lieu de exe.

Ignacio Vazquez-Abrams
la source
1

Je suppose que cette commande devrait fonctionner. C'est une petite solution de contournement mais cela fonctionne au moins sur ma machine.

pour strlist dans $ (ps e PID), faites si [$ {strlist: 0: 4} = "PWD ="]; alors echo $ {strlist: 4}; fi; done

Enrico
la source
0

Quand j'ai couru

ps auxwwwe | grep executableName > dump
vim dump

J'ai pu rechercher la partie du chemin que je connaissais, puis j'ai découvert à partir de quel sous-répertoire la commande était invoquée

Jader Dias
la source