/dev/fd가 일관성이 없습니다

/dev/fd가 일관성이 없습니다

다음 보고서 내용의 불일치를 어떻게 설명할 수 있나요 /dev/fd?

erhannis@mnode6:/dev/fd$ ll /dev/fd/
total 0
dr-x------ 2 erhannis erhannis  0 Jan 12 22:10 .
dr-xr-xr-x 9 erhannis erhannis  0 Jan 12 22:10 ..
lrwx------ 1 erhannis erhannis 64 Jan 12 22:10 0 -> /dev/pts/8
lrwx------ 1 erhannis erhannis 64 Jan 12 22:10 1 -> /dev/pts/8
lrwx------ 1 erhannis erhannis 64 Jan 12 22:10 2 -> /dev/pts/8
lr-x------ 1 erhannis erhannis 64 Jan 12 22:10 3 -> /proc/24334/fd
erhannis@mnode6:/dev/fd$ ll
total 0
dr-x------ 2 erhannis erhannis  0 Jan 12 21:42 .
dr-xr-xr-x 9 erhannis erhannis  0 Jan 12 21:42 ..
lrwx------ 1 erhannis erhannis 64 Jan 12 21:42 0 -> /dev/pts/8
lrwx------ 1 erhannis erhannis 64 Jan 12 21:42 1 -> /dev/pts/8
lrwx------ 1 erhannis erhannis 64 Jan 12 21:42 2 -> /dev/pts/8
lrwx------ 1 erhannis erhannis 64 Jan 12 21:55 255 -> /dev/pts/8

특히 링크된 ll파일은 별도로 표시되지만 링크된 파일은 표시된다는 점에 유의하세요. (프로세스 번호는 매번 바뀌는데, 자체 프로세스 번호인 것 같아요.)255/dev/pts/8ll /dev/fd/3/proc/24334/fdll

....날짜가 다르다는 것도 알게 되었습니다. 에 대한 디렉토리 와 에 대한 디렉토리가 달라졌습니까 /dev/fd/? 또한 /dev/fd(두 경로 중 하나를 사용하여)에 파일을 생성할 수 없다는 사실도 발견했습니다.

답변1

첫 번째 경우에는 ls나열된 내용 /dev/fd -> /proc/self/fd -> /proc/<pid_of_ls>/fd, 두 번째 경우에는 나열된 내용 입니다 /proc/<pid_of_the_shell>/fd.

( 인수 없이 호출할 때 나열된 현재 디렉터리 ) /dev/fd에 대한 (마법의) 심볼릭 링크이지만 그렇지 않으며 이전 호출의 값 으로 확인되었습니다 ./proc/self/fd.ls/proc/<pid_of_the_shell>/fdcd /dev/fd

ll255연결된 파일을 개별적으로 표시/dev/pts/8

이것은 bash 쉘에서 내부적으로 사용되는 파일 설명자이며, 이 플래그로 열면 시스템 호출이 다른 프로그램을 실행하는 데 사용될 때(귀하의 경우처럼) O_CLOEXEC자동으로 닫힙니다 .execve(2)/bin/ls

또한 /dev/fd(두 경로 중 하나를 사용하여)에 파일을 생성할 수 없다는 사실도 발견했습니다.

Linux의 파일 시스템에서는 파일을 생성할 수 없습니다 procfs.

그러나 아래 디렉터리에 다른 파일 시스템을 마운트 /proc하거나 아래 경로에 있는 파일이나 디렉터리를 바인드 마운트 할 수 있습니다 /proc. 다른 곳과 마찬가지로.

관련 정보