Как я могу получить имена файлов, открытых процессом?

394
techfun

Я хочу перечислить все имена файлов, открытых процессом init. Я знаю о /proc/PID/fdкаталоге. Но это дает только файловые дескрипторы. Как я могу получить имена файлов из списка файловых дескрипторов?

1

1 ответ на вопрос

2
ckujau

Use lsof to list open files of a process, in your case "init":

$ sudo lsof -ln -p `pgrep init` COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 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 
Я знаю, что вам нужен общий ответ, поэтому вы добавили pgrep, но вы помните, что `init` всегда PID 1, верно? Не уверен, что systemd и upstart ограничены PID 1, хотя. Rich Homolka 10 лет назад 0
Хе-хе, да, я знаю. Но на самом деле я хотел получить общий ответ :) systemd также имеет PID 1, upstart запускается как / sbin / init, также с PID 1. ckujau 10 лет назад 0

Похожие вопросы