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
그리고 dir5의 링크 카운트가 다음 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). 그래서 디렉토리에 유일하게 가능한 하드 링크는 말한다 몇 가지 표준 곳이 아니라면 .와 ..다시는, 나는 단지 캐주얼 단서로 그 하드 링크 수를 치료하는 것입니다.