파일 설명자가 파이프에 대한 링크라는 것은 무엇을 의미합니까?

파일 설명자가 파이프에 대한 링크라는 것은 무엇을 의미합니까?

을 보면 ls -la /proc/<pid>/fdstdout이 파이프에 대한 링크라는 것을 알 수 있습니다.

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]'

관련 정보