Digamos que eu apenas criei o diretório newDirectory e, em seguida, eu faço o comando ls -ld. Vejo que o número de links físicos é 2. O que exatamente torna o link físico 2 desde o início? Além disso, o número de subdiretórios no diretório atual é igual ao número de links físicos - 2?
38
Respostas:
Historicamente , o primeiro sistema de arquivos Unix criou duas entradas em cada diretório:
.
apontando para o próprio diretório e..
apontando para seu pai. Isso proporcionou uma maneira fácil de percorrer o sistema de arquivos, tanto para aplicativos quanto para o próprio sistema operacional.Assim, cada diretório tem uma contagem de links de 2 + n, em que n é o número de subdiretórios. Os links são a entrada para esse diretório em seu pai, a
.
entrada do próprio diretório e a..
entrada em cada subdiretório. Por exemplo, suponha que este seja o conteúdo da subárvore com raiz em/parent
todos os diretórios:Então
dir
tem uma contagem da ligação de 5: adir
entrada no/parent
, a.
entrada no/parent/dir
, e as três..
entradas em cada um/parent/dir/sub1
,/parent/dir/sub2
e/parent/dir/sub3
. Como/parent/dir/sub1
não possui subdiretório, sua contagem de links é 2 (asub1
entrada/parent/dir
e a.
entrada/parent/dir/sub1
).Para minimizar a quantidade de maiúsculas e minúsculas para o diretório raiz, que não possui um pai "adequado", o diretório raiz contém uma
..
entrada apontando para si mesma. Dessa forma, também possui uma contagem de links de 2 mais o número de subdiretórios, sendo 2/.
e/..
.Os sistemas de arquivos posteriores tendem a acompanhar os diretórios-pai na memória e geralmente não precisam
.
e..
existem como entradas reais; sistemas unix modernos típicos tratam.
e..
como valores especiais como parte do código do sistema de arquivos independente do tipo de sistema de arquivos. Alguns sistemas de arquivos ainda incluir.
e..
entradas, ou fingir mesmo que não aparece nada no disco.A maioria dos sistemas de arquivos ainda relatam uma contagem da ligação de 2 + n para diretórios independentemente de
.
e..
existem entradas, mas há exceções, por exemplo, o Btrfs não fazer isso.fonte
..
apontar para o pai não afeta a contagem de links do diretório atual. A contagem de 2 vem.
e o nome (original) do diretório é listado. A maneira como você coloca isso é um pouco ambígua e faz parecer.
e..
são os dois...
deve ser usado apenas para explicar como a matemática funciona para2+n
:).
dentro dele". Se ainda não está claro para você, lamento não poder esclarecer mais. Tudo o que eu poderia fazer melhor é copiar e colar sua resposta aqui nos comentários.Há um para o próprio diretório e outro para
.
dentro dele.Isso faz sentido, já que cada subdiretório cria um
..
link físico e, além disso, você não pode criar links físicos para diretórios. 1 No entanto, eu não confiaria nisso por nada sério, esp. pois é fácil contar os subdiretórios e obter o número real.Se você está apenas olhando para a
ls
saída, para ter uma idéia de quantos subs existem, é uma boa idéia.1 Ou pelo menos você não pode
ln
. Eu não tentei programaticamente eman 2 link
é ambíguo - não há erro óbvio ao vincular a um diretório, embora haja alguns que possam ser aplicados (EMLINK
,EPERM
). Portanto, a menos que haja algum padrão em algum lugar que diga que os únicos possíveis links físicos para um diretório são.
e..
, novamente, eu trataria apenas essa contagem de links físicos como uma pista casual.fonte