2016-05-24 12 views
2

erhalten Gibt es eine einfache Möglichkeit, den kanonischen Pfad und die Argumente zu erhalten, mit denen ein bestimmter Prozess (pid) ausgeführt wurde.Bash: canonischer Pfad und Argumente von pid

Zum Beispiel für Prozess 1445 Ich möchte bekommen: /usr/bin/xclock -digital

Was ich dachte zu tun ist:

$ ls -l /proc/1445 | grep exe 

so etwas wie ....... -> /usr/bin/xclock

zu bekommen und dann

$ ps 1445 | cut -b 28- | tail -n 1 

zu bekommen xclock -digital

Und fertig, indem Sie diese beiden Ausgänge zusammen. Ich denke, das könnte funktionieren, aber ich denke, es sollte einen besseren Weg geben, dies zu tun.

Und Hilfe würde sehr geschätzt werden.

Antwort

2

Sie können den Inhalt von /proc/$PID/cmdline analysieren, um den Pfad und die Argumente zu erhalten (siehe How to parse /proc/pid/cmdline für weitere Details).

Der kanonische Pfad kann mit realpath(1) erhalten werden.

+0

Wird es funktionieren, wenn PATH zum Zeitpunkt der Ausführung von z.B. xclock wurde eingestellt, um eine andere xclock von z.B./home/benutzer/bin/xclock? (mit einem anderen xclock in/usr/bin im "normalen" PATH). Oder müsste eine weitere Analyse der Umwelt aus der PS-Ausgabe dafür gemacht werden? –

+1

Ja, es sollte funktionieren, aber Sie werden nicht wissen, welche xclock läuft, wenn Sie einfach 'xclock' aufrufen. Um zu wissen, welches Programm gerade läuft, können Sie sich '/ proc/$ PID/exe' anschauen. – blatinox