Wenn Sie die Prozess-ID nicht kennen, müssen Sie alle Prozesse überprüfen, für die die gleiche fd # geöffnet ist, da Dateideskriptoren nicht global eindeutig sind. Je kleiner die fd #, desto mehr Prozesse werden geöffnet (z. B. auf meinem System, selbst wenn die fd # etwa 30 ist, muss ich immer noch zwischen 15 Prozessen raten. Wenn ich nach fd # um 10 suchte, dann hätte die Liste ~ 170 Prozesse).
Das proc-Dateisystem zeigt die Dateibeschreibungen als symbolische Links unter an ./proc/<pid>/fd
# ls -l / proc / 1 / fd lrwx ------ 1 Wurzel Wurzel 64 12. Februar 22:10 / proc / 1 / fd / 0 -> / dev / null lrwx ------ 1 wurzel wurzel 64 Feb 12 22:10 / proc / 1 / fd / 1 -> / dev / null lrwx ------ 1 root root 64 12. Februar 22:10 / proc / 1 / fd / 2 -> / dev / null l-wx ------ 1 wurzel wurzel 64 Feb 12 22:10 / proc / 1 / fd / 3 -> / dev / kmsg lrwx ------ 1 wurzel wurzel 64 Feb 12 22:10 / proc / 1 / fd / 4 -> anon_inode: [eventpoll] lrwx ------ 1 wurzel wurzel 64 Feb 12 22:10 / proc / 1 / fd / 5 -> anon_inode: [signalfd] lr-x ------ 1 wurzel wurzel 64 Feb 12 22:10 / proc / 1 / fd / 6 -> / sys / fs / cgroup / systemd / ...usw...
Um beispielsweise in allen Prozessen nach fd # 5 zu suchen:
# ls -l / proc / * / fd / 5 lrwx ------ 1 wurzel wurzel 64 Feb 12 22:10 / proc / 1 / fd / 5 -> anon_inode: [signalfd] lrwx ------ 1 wurzel wurzel 64 Feb 12 22:15 / proc / 129 / fd / 5 -> socket: [6980] lrwx ------ 1 wurzel wurzel 64 Feb 12 22:15 / proc / 168 / fd / 5 -> socket: [7847] lrwx ------ 1 wurzel wurzel 64 Feb 12 22:15 / proc / 341 / fd / 5 -> anon_inode: [eventfd] lr-x ------ 1 wurzel wurzel 64 Feb 12 22:15 / proc / 342 / fd / 5 -> anon_inode: inotify ...usw...
Die genaue Schnittstelle zum Auflösen von Symlink-Zielen lautet readlink()
:
# readlink / proc / 427529 / fd / 7 /home/grawity/lib/dotfiles/vim/backup/%home%grawity%.bashrc.swp