Скажем, я просто создаю каталог newDirectory, а затем делаю команду ls -ld. Я вижу, что количество жестких ссылок равно 2. Что именно делает жесткую ссылку 2 с самого начала? Кроме того, количество подкаталогов в текущем каталоге равно количеству жестких ссылок - 2?
38
Ответы:
Исторически , первая файловая система Unix создавала две записи в каждом каталоге:
.
указывая на сам каталог и..
указывая на его родителя. Это обеспечило простой способ обхода файловой системы, как для приложений, так и для самой ОС.Таким образом, каждый каталог имеет количество ссылок 2 + n, где n - это количество подкаталогов. Ссылки - это запись для этого каталога в его родительском элементе, собственная
.
запись каталога и..
запись в каждом подкаталоге. Например, предположим, что это содержимое поддерева, корень которого находится во/parent
всех каталогах:Затем
dir
имеет счетчик ссылок 5:dir
запись в/parent
,.
запись в/parent/dir
и три..
записи в каждой из/parent/dir/sub1
,/parent/dir/sub2
и/parent/dir/sub3
. Так/parent/dir/sub1
как не имеет подкаталога, его счетчик ссылок равен 2 (sub1
запись в/parent/dir
и.
запись в/parent/dir/sub1
).Чтобы свести к минимуму количество специальных регистров для корневого каталога, у которого нет «правильного» родителя, корневой каталог содержит
..
запись, указывающую на себя. Таким образом, он также имеет счетчик ссылок 2 плюс количество подкаталогов, где 2/.
и/..
.Более поздние файловые системы, как правило, отслеживали родительские каталоги в памяти и, как правило, не нужны
.
и..
существуют как реальные записи; Типичные современные Unix-системы рассматривают.
и..
как специальные значения как часть кода файловой системы, независимого от типа файловой системы. Некоторые файловые системы по-прежнему включают.
и..
записи, или делают вид, что на диске ничего не появляется.Большинство файловых систем до сих пор сообщают количество ссылок на 2 + п для каталогов , независимо от того
.
и..
существуют записи, но есть исключения, например , Btrfs не делает этого.источник
..
указание на родителя не влияет на количество ссылок текущего каталога. Счетчик 2 исходит из.
самого каталога (оригинального) имени. То, как вы это называете, немного двусмысленно, и звучит так, как.
и..
они...
следует использовать только для объяснения того, как работает математика2+n
:).
него». Если вам все еще неясно, мне очень жаль, что я не могу уточнить дальше. Все, что я мог сделать лучше, это скопировать + вставить свой ответ здесь в комментариях.Есть один для самого каталога, и один для
.
него.Это имеет смысл, поскольку каждый подкаталог создает
..
жесткую ссылку, и кроме этого вы не можете создавать жесткие ссылки на каталоги. 1 Тем не менее, я бы не стал доверять этому что-либо серьезное, особенно. так как легко подсчитать подкаталоги и получить действительное число.Если вы просто смотрите на
ls
вывод, чтобы получить представление о количестве подводных лодок, тогда он даст вам достойную идею.1 Или, по крайней мере, вы не можете с
ln
. Я не пытался программно, иman 2 link
это неоднозначно - нет очевидной ошибки для ссылки на каталог, хотя есть пара, которая может применяться (EMLINK
,EPERM
). Поэтому, если где-то не существует какого-либо стандарта, в котором говорится, что единственными возможными жесткими ссылками на каталог являются,.
и..
, опять же, я бы отнесся к этому количеству жестких ссылок как к случайной подсказке.источник