Wie kann ich Dateinamen von einem Prozess öffnen lassen?

509
techfun

Ich möchte alle von init-Prozess geöffneten Dateinamen auflisten. Ich kenne das /proc/PID/fdVerzeichnis. Aber das gibt nur Dateideskriptoren. Wie kann ich Dateinamen aus der Liste der Dateideskriptoren erhalten?

1

1 Antwort auf die Frage

2
ckujau

Verwenden Sie lsof, um geöffnete Dateien eines Prozesses aufzulisten, in Ihrem Fall "init":

$ sudo lsof -ln -p `pgrep init` BEFEHL PID BENUTZER FD TYP GERÄTEGRÖSSE / AUS-KNOTENNAME init 1 0 cwd DIR 8,1 4096 2 / init 1 0 rtd DIR 8,1 4096 2 / init 1 0 txt REG 8,1 36992 354775 / sbin / init init 1 0 mem REG 8,1 14768 354922 /lib/x86_64-linux-gnu/libdl-2.13.so init 1 0 mem REG 8,1 1599504 350331 /lib/x86_64-linux-gnu/libc-2.13.so init 1 0 mem REG 8,1 126232 354818 /lib/x86_64-linux-gnu/libselinux.so.1 init 1 0 mem REG 8,1 261184 354836 /lib/x86_64-linux-gnu/libsepol.so.1 init 1 0 mem REG 8,1 136936 354986 /lib/x86_64-linux-gnu/ld-2.13.so init 1 0 10u FIFO 0,14 0t0 3054 / run / initctl 
Ich weiß, dass Sie eine allgemeine Antwort haben wollten, also haben Sie pgrep hinzugefügt, aber Sie erinnern sich, dass "init" immer PID 1 ist, oder? Nicht sicher, ob systemd und upstart die PID 1 einschränken. Rich Homolka vor 10 Jahren 0
Hehe, ja, ich weiß. Aber in der Tat wollte ich eine allgemeine Antwort :) systemd hat auch PID 1, upstart läuft als / sbin / init, auch mit PID 1. ckujau vor 10 Jahren 0