newDirectory 디렉토리를 만든 다음 ls -ld 명령을 수행한다고 가정 해보십시오. 하드 링크의 수가 2임을 알 수 있습니다. 처음부터 하드 링크 2를 정확히 만드는 것은 무엇입니까? 또한 현재 디렉토리의 하위 디렉토리 수는 하드 링크 수-2와 동일합니까?
newDirectory 디렉토리를 만든 다음 ls -ld 명령을 수행한다고 가정 해보십시오. 하드 링크의 수가 2임을 알 수 있습니다. 처음부터 하드 링크 2를 정확히 만드는 것은 무엇입니까? 또한 현재 디렉토리의 하위 디렉토리 수는 하드 링크 수-2와 동일합니까?
답변:
역사적 으로 첫 번째 Unix 파일 시스템은 모든 디렉토리 .
에 디렉토리 자체를 ..
가리키는 것과 부모를 가리키는 두 개의 항목을 만들었습니다 . 이를 통해 응용 프로그램과 OS 자체 모두에서 파일 시스템을 쉽게 탐색 할 수 있습니다.
따라서 각 디렉토리의 링크 수는 2 + n이며 여기서 n은 하위 디렉토리의 수입니다. 링크는 상위 디렉토리에있는 해당 디렉토리의 .
항목, 디렉토리 자체의 항목 및 ..
각 서브 디렉토리 의 항목입니다. 예를 들어, 이것이 /parent
모든 디렉토리 에서 루트로 지정된 서브 트리의 컨텐츠라고 가정하십시오 .
/parent
/parent/dir
/parent/dir/sub1
/parent/dir/sub2
/parent/dir/sub3
그리고 dir
5의 링크 카운트가 다음 dir
의 항목 /parent
의 .
의 항목 /parent/dir
, 그리고 세 가지 ..
의 각 항목을 /parent/dir/sub1
, /parent/dir/sub2
하고 /parent/dir/sub3
. 이후 /parent/dir/sub1
하위 디렉토리가 없습니다, 해당 링크의 수는 2 (은 IS sub1
의 항목 /parent/dir
과 .
항목 /parent/dir/sub1
).
“적절한”부모가없는 루트 디렉토리에 대한 특수 케이스의 양을 최소화하기 위해 루트 디렉토리에는 ..
자체를 가리키는 항목이 포함 됩니다. 이 방법은,도 2의 링크 카운트 플러스 하위 디렉토리의 수, 두 존재가 /.
와 /..
.
나중에 파일 시스템은 메모리의 상위 디렉토리를 추적하고 일반적으로 필요하지 않는 경향이있다 .
및 ..
실제 항목으로 존재; 전형적인 현대 유닉스 시스템의 치료 .
및 ..
특수 값으로 파일 시스템 유형에 독립적 인 파일 시스템 코드의 한 부분으로. 일부 파일 시스템은 여전히 디스크에 아무 것도 나타나지 않더라도 항목 .
과 ..
항목을 포함 하거나 가장합니다.
대부분의 파일 시스템은 항목 .
과 ..
존재 여부에 관계없이 디렉토리에 대해 링크 수를 2 + n으로보고 하지만 예외가 있습니다 (예 : btrfs가이를 수행하지 않음).
..
부모를 가리키는 것은 현재 디렉토리의 링크 수에 영향을 미치지 않습니다. 2의 수 .
와 디렉토리의 (원래) 이름 목록 자체 에서 나옵니다 . 당신이 그것을 넣어하는 방법은 약간 모호하고,이 같은 소리하게 .
하고 ..
두이다. ..
수학이에게 어떻게 작동하는지 설명에만 사용해야합니다 2+n
:)
.
내부에 하나씩 있습니다." 여전히 확실하지 않은 경우 더 이상 명확하게 설명 할 수 없습니다. 내가 더 잘 할 수있는 것은 여기에 그의 대답을 복사하여 붙여 넣는 것입니다.
디렉토리 자체와 .
내부에 하나가 있습니다.
또한 현재 디렉토리의 하위 디렉토리 수는 하드 링크 수-2와 동일합니까?
각 서브 디렉토리는 ..
하드 링크를 작성 하고 그 이상으로 디렉토리에 대한 하드 링크를 작성할 수 없으므로 의미가 있습니다. 1 그러나 나는 이것을 심각하게 신뢰하지 않을 것입니다. 하위 디렉토리를 계산하고 실수를 얻는 것이 쉽지 않기 때문입니다.
ls
서브가 몇 개인 지에 대한 아이디어를 얻기 위해 출력을 보고 있다면 괜찮은 아이디어를 얻을 수 있습니다.
1 또는 적어도 당신은 할 수 없습니다 ln
. 프로그래밍 방식으로 시도하고,하지 않은 man 2 link
모호 - 디렉토리에 연결하기위한 명백한 오류가 없다, (적용 할 수있는 몇 가지가 있지만 EMLINK
, EPERM
). 그래서 디렉토리에 유일하게 가능한 하드 링크는 말한다 몇 가지 표준 곳이 아니라면 .
와 ..
다시는, 나는 단지 캐주얼 단서로 그 하드 링크 수를 치료하는 것입니다.