Wie bestimme ich den Pfad zu einer Binärdatei eines Prozesses?


30

Gibt es eine Möglichkeit, das Verzeichnis / den Speicherort herauszufinden, von dem aus ein Prozess gestartet wurde? Ich bin mir des / proc-Mount bewusst, aber nicht wirklich, wo ich hineinschauen soll.


1
Meinen Sie den Speicherort der Binärdatei oder das Verzeichnis, aus dem ein Prozess gestartet wurde?
Lekensteyn

Entschuldigen Sie die Mehrdeutigkeit, ich meine die binäre
SuperJumbo

Antworten:


37

Der /procWeg wäre, den exeLink in dem Verzeichnis zu überprüfen, das der pid entspricht.

Nehmen wir ein Beispiel mit update-notifier:

Suchen Sie die pid, die in diesem Beispiel 15421 lautet :

egil@gud:~$ ps x | grep update-notifier
 2405 pts/4    S+     0:00 grep update-notifier
15421 ?        Sl     0:00 update-notifier

Schlagen Sie den symbolischen Link nach:

egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to `/usr/bin/update-notifier'

Oh ja, ich war fast da. Legende, danke.
SuperJumbo


6

Vorausgesetzt, Sie haben eine Prozess-ID zur Verfügung, können Sie Folgendes verwenden:

readlink -f /proc/$pid/exe

(Ersetzen $piddurch die Prozess-ID eines Prozesses)

Wenn der Prozess Ihnen nicht gehört, müssen Sie ihn voranstellen sudo.

Ein Beispiel zum Ermitteln der Position des Befehls firefox:

  1. Die Ausgabe von ps ax -o pid,cmd | grep firefox:

    22831 grep --color=auto firefox
    28179 /usr/lib/firefox-4.0.1/firefox-bin
    
  2. 28179 ist die Prozess-ID, Sie müssen also Folgendes ausführen:

    readlink -f /proc/28179/exe
    

    welche Ausgänge:

    /usr/bin/firefox
    

2
Sie können coole Dinge tun /proc/$pid/exe, wenn die Binärdatei versehentlich gelöscht wird, können Sie sie wiederherstellen mit:dd if=/proc/$pid/exe of=restored-binary
Lekensteyn

1

Drücken Sie Ctrl+ Alt+ T, um zu einem Terminal zu gelangen und geben Sie Folgendes ein:

ls -al /proc/{pid}/fd  

und dann die Ausgabe überprüfen

Dies listet alle Dateien auf, denen Ihr Prozess zugeordnet ist ...


Könnten Sie bitte meine Änderungen und auch die Bearbeitungshilfe überprüfen , um die Lesbarkeit Ihrer Antworten in Zukunft zu verbessern ... ;-)
Fabby

0

Alle Befehle in den anderen Antworten sind gut, aber Sie können noch mehr tun - sehen, wie ein Prozess tatsächlich ausgeführt wurde, bevor er in die Prozessliste aufgenommen wurde.

Im Terminal ausführen:

top

Und während es läuft, drücken Sie die Tastatur Cund Sie erhalten einen Befehl über die Prozesse, die ausgeführt wurden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.