을 보면 ls -la /proc/<pid>/fd
stdout이 파이프에 대한 링크라는 것을 알 수 있습니다.
lr-x------ 1 admin root 64 Jul 9 21:22 1 -> pipe:[1155]
무슨 뜻이에요? 이 파이프를 듣는 사람은 누구입니까? 이 프로세스의 표준 출력을 어떻게 볼 수 있나요?
답변1
다음에서 빌림이 답변이는 PID가 있는 프로세스의 표준 출력이 <pid>
다음으로 리디렉션되었음을 의미합니다.관로(일종의선입선출파일 시스템 계층 구조에 표시되지 않음) 1155
파이프의 inode 번호입니다(Linux에서는 다음을 /proc/[pid]/fd/
수행할 수 있습니다 ).proc(5)
자세한 내용은 매뉴얼 페이지 참조).
한 가지 예:
$ cat - | less
$ pgrep cat
187873
$ ls -l /proc/187873/fd/1
l-wx------ 1 user user 64 Jul 9 22:23 /proc/187873/fd/1 -> 'pipe:[1624839]'
의 표준 출력은 cat
인덱스 노드가 인 파이프의 쓰기 끝으로 리디렉션되는 1624839
반면, 의 표준 입력은 less
읽기 끝에서 리디렉션됩니다.
파이프의 읽기 끝에 연결된 프로세스에 대해 아무것도 모르는 경우 파이프가 열려 있는 모든 프로세스를 검색할 수 있습니다(그러나 이를 보는 데 필요한 권한이 없을 수도 있습니다).
$ fuser -v /proc/187873/fd/1
USER PID ACCESS COMMAND
/proc/187873/fd/1: user 187873 F.... cat
user 187874 f.... less
그런 다음 less
열려 있는지 확인합니다(읽기용).
$ ls -l /proc/187874/fd/0
lr-x------ 1 user user 64 Jul 9 22:28 /proc/187874/fd/0 -> 'pipe:[1624839]'
답변2
파이프의 다른 쪽 끝을 찾을 수 있습니다(프로세스가 여전히 존재하는 경우).
ls -l /proc/[1-9]*/fd 2>/dev/null | grep -B 3 -F 'pipe:[1155]'