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.
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.
Antworten:
Der /proc
Weg wäre, den exe
Link 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'
Vielleicht which
ist es das, wonach Sie suchen. Zum Beispiel auf meinem System
which firefox
kehrt zurück
/usr/bin/firefox
Siehe auch Pfad der Anwendung suchen, die unter Solaris, Ubuntu, Suse oder Redhat Linux ausgeführt wird .
which
ist cool, gibt aber nur Programme in Ihrem $ PATH zurück. Wenn ich renne RandomProgramIDownloadedToErisKnowsWhere.bin
, nützt das nicht viel.
Vorausgesetzt, Sie haben eine Prozess-ID zur Verfügung, können Sie Folgendes verwenden:
readlink -f /proc/$pid/exe
(Ersetzen $pid
durch 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
:
Die Ausgabe von ps ax -o pid,cmd | grep firefox
:
22831 grep --color=auto firefox
28179 /usr/lib/firefox-4.0.1/firefox-bin
28179
ist die Prozess-ID, Sie müssen also Folgendes ausführen:
readlink -f /proc/28179/exe
welche Ausgänge:
/usr/bin/firefox
/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
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 ...
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 C
und Sie erhalten einen Befehl über die Prozesse, die ausgeführt wurden.