파이프의 다른 쪽 끝에있는 프로세스 찾기 -l /proc/7926/fd/3 lr-x——

몇 가지 프로세스의 이상한 동작을 추적하려고하는데 과거를 추적하는 방법을 잘 모르겠습니다. 내가 사용하는 중단 된 프로세스 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]

자, 이제 파이프입니다. 이제 질문입니다.이 파이프의 작성자는 누구입니까? 리눅스에는 유닉스 도메인 소켓을위한 특별한 기능이 있는데, 여기서 “추상 소켓 네임 스페이스”에 접근하기 위해 NUL 바이트로 시작하는 파일 경로를 요청할 수 있습니다 ( http://tkhanson.net/cgit.cgi). /misc.git/plain/unixdomain/Unix_domain_sockets.html ). 내가 활용할 수있는 파이프와 비슷한 것이 있는지 확실하지 않지만 아무것도 찾지 못했습니다.

나는 도구 가 도움이 fuser되거나 lsof도움 이되기를 바랐 지만 아무데도 못 갔다.

어떤 아이디어?



답변

심볼릭 링크 “pipe : [20043922]”는 고유 ID입니다. 파이프의 다른 쪽 끝은 일치하는 ID를 갖습니다.

(find /proc -type l | xargs ls -l | fgrep 'pipe:[20043922]') 2>/dev/null

파이프의 양쪽 끝을 보여 주어야합니다.


답변

다음 lsof명령을 사용하여 파이프를 사용하여 프로세스 목록을 얻을 수 있습니다 .

lsof | grep 'FIFO.*20043922'

출력은 판독기 (1r와 같은 항목이있는 FD 열)와 기록기 (2w와 같은 항목이있는 동일한 열)를 표시합니다.