Próbuję wyśledzić dziwne zachowanie kilku procesów i natrafiłem na punkt, który nie jestem pewien, jak prześledzić przeszłość. Zawieszony proces, do którego się przyłączyłem, strace -p
pokazał:
Process 7926 attached - interrupt to quit
read(3,
Okej, więc czeka na wejście na FD 3, więc poszedłem sprawdzić, co to jest:
$ ls -l /proc/7926/fd/3
lr-x------ 1 user grp 64 Mar 15 10:41 /proc/7926/fd/3 -> pipe:[20043922]
Okej, więc to fajka ... teraz pytanie - kto jest autorem tej fajki? Pamiętam, że w systemie Linux istnieje specjalna funkcja dla gniazd domeny unix, w której można zażądać ścieżki pliku, która zaczyna się bajtem NUL, aby uzyskać dostęp do „abstrakcyjnej przestrzeni nazw gniazd” (wspomnianej tutaj: http://tkhanson.net/cgit.cgi /misc.git/plain/unixdomain/Unix_domain_sockets.html ). Nie jestem pewien, czy istnieje coś podobnego do rur, z którego mógłbym skorzystać, ale niczego nie znalazłem.
Miałem nadzieję, że narzędzie takie fuser
lub lsof
może pomóc, ale nigdzie nie dotarłem.
Jakieś pomysły?
Możesz uzyskać listę procesów za pomocą potoku za pomocą
lsof
polecenia:lsof | grep 'FIFO.*20043922'
Dane wyjściowe pokażą czytniki (w kolumnie FD z wpisami jak 1r) i pisarzy (te same kolumny z wpisami jak 2w).
źródło