Wie kann ich herausfinden, in welchem ​​Ordner ein Prozess ausgeführt wird?

15

In * nix können Sie pssehen, welcher Prozess läuft. Wenn eine ausführbare Datei jedoch mehrere gleichnamige Dateien auf einem Gerät enthält, können wir nicht herausfinden, von wo aus sie aufgerufen wurde.

Dies unterscheidet sich geringfügig von meiner letzten Frage zu diesem Thema. Wie kann ich den absoluten Pfad eines laufenden Prozesses erkennen?

Jader Dias
quelle

Antworten:

20

Versuche dies:

ls -l /proc/<PID>/cwd
NABE
quelle
7

Abgeleitet von HUB's Antwort:

readlink /proc/<PID>/cwd

oder auch

readlink /proc/$(pgrep <program_name>)/cwd
jpaugh
quelle
+1 Die Ausgabe von readlinkkann in einem Skript besser analysiert werden.
Marco Leogrande
2

Sie können nicht sagen , wo ein Prozess aufgerufen wurde aus , wo es nur noch ist . Schauen Sie auf den cwdLink ("aktuelles Arbeitsverzeichnis") anstatt exe.

Ignacio Vazquez-Abrams
quelle
1

Ich denke, dieser Befehl sollte funktionieren. Es ist eine kleine Problemumgehung, funktioniert aber zumindest auf meinem Computer.

für strlist in $ (ps e PID): do if [$ {strlist: 0: 4} = "PWD ="]; dann echo $ {strlist: 4}; fi; done

Enrico
quelle
0

Als ich rannte

ps auxwwwe | grep executableName > dump
vim dump

Ich konnte nach dem Teil des Pfades suchen, den ich kannte, und dann herausfinden, aus welchem ​​Unterverzeichnis der Befehl aufgerufen wurde

Jader Dias
quelle