В Linux, если вы /proc/<pid>/fd
будете часто копаться, вы увидите вывод:
lrwx------ 1 root root 64 Jul 30 15:14 0 -> /dev/null
lrwx------ 1 root root 64 Jul 30 15:14 1 -> /dev/null
l-wx------ 1 root root 64 Jul 30 15:14 10 -> pipe:[90222668]
lr-x------ 1 root root 64 Jul 30 15:14 11 -> pipe:[90222669]
l-wx------ 1 root root 64 Jul 30 15:14 13 -> pipe:[90225058]
lr-x------ 1 root root 64 Jul 30 15:14 14 -> pipe:[90225059]
Как я могу получить больше информации об открытых каналах, например, какой процесс находится на другом конце?
/proc
происходит медленно. Может ли кто-нибудь предложить более эффективное решение?Ответы:
Похоже на другие ответы, но:
Покажет вам оба конца, потому что оба конца разделяют «номер трубы».
источник
lsof -n -P | grep 90222668
чтобы избежать ненужных поисков имен, что должно ускорить его.Единственный способ узнать, какой процесс находится на другом конце, - это перебрать все процессы в / proc и посмотреть, кто использует этот канал (т. Е. У которых есть символические ссылки в / proc / pid / fd на тот же идентификатор канала)
источник
ls -l /proc/*/fd/ | grep $PIPE_ID; ls -l /proc/*/fd/$FD | grep $PIPE_ID
первая команда ls напечатает файловые дескрипторы обоих концов канала, а вторая даст вам идентификатор процессаБольше всего информации о том, как добраться до открытых труб, я знаю
Боюсь, до сих пор рассказывается только об одном конце.
источник