Я пытаюсь отследить какое-то странное поведение нескольких процессов и столкнулся с тем, что не знаю, как отследить прошлое. Зависший процесс, который я подключил к использованию, strace -p
показал это:
Process 7926 attached - interrupt to quit
read(3,
Итак, он ожидает ввода на fd 3, поэтому я пошел, чтобы проверить, что это такое:
$ ls -l /proc/7926/fd/3
lr-x------ 1 user grp 64 Mar 15 10:41 /proc/7926/fd/3 -> pipe:[20043922]
Итак, это труба ... теперь вопрос - кто автор этой трубы? Напомню, что в Linux есть специальная функция для доменных сокетов unix, где вы можете запросить путь к файлу, который начинается с байта NUL, для доступа к «абстрактному пространству имен сокетов» (упомянуто здесь: http://tkhanson.net/cgit.cgi /misc.git/plain/unixdomain/Unix_domain_sockets.html ). Я не уверен, есть ли что-то подобное для труб, чем я мог бы воспользоваться, но я ничего не нашел.
Я надеялся, что такой инструмент, как fuser
или lsof
может помочь, но я нигде не получил.
Любые идеи?
Вы можете получить список процессов, используя канал, используя
lsof
команду:lsof | grep 'FIFO.*20043922'
Выходные данные будут отображать читателей (в столбце FD с записями, такими как 1r) и пишущих (те же столбцы с записями, как 2w).
источник