Назад | Перейти на главную страницу

Путаница с жесткими ссылками в Linux

Меня смущает жесткая ссылка Linux,

Я создал жесткую ссылку с помощью этой команды в своем ящике Ubuntu,

ln f1 f2

Итак, f2 должен быть жесткой ссылкой на f1, но почему я изменил f2 с помощью emacs и сохранил f2, f1 вообще не изменился. Насколько я понимаю, на f1 должно было быть внесено любое изменение, которое я сделал на f2.

Я провел небольшое тестирование и выяснил, что произошло. Во-первых, команда ls -li показывает номер inode в первом столбце, две жесткие ссылки на один и тот же файл будут иметь одинаковый номер inode:

$ echo hi > f1
$ ln f1 f2
$ ls -li
total 8
1646595 -rw-r--r-- 2 randy randy 3 2011-06-18 06:50 f1
1646595 -rw-r--r-- 2 randy randy 3 2011-06-18 06:50 f2

Файлы f1 и f2 имеют номер индекса 1646595, они жестко связаны с одними и теми же данными. Я использовал emacs для редактирования f1 и сохранил:

$ ls -li
total 12
1646597 -rw-r--r-- 1 randy randy 9 2011-06-18 06:51 f1
1646595 -rw-r--r-- 2 randy randy 3 2011-06-18 06:50 f1~
1646595 -rw-r--r-- 2 randy randy 3 2011-06-18 06:50 f2

Теперь у f1 ~ и f2 одинаковый номер inode, а у f1 новый номер inode.

Emacs переименовал f1 в f1 ~ и создал новый файл f1. f1 ~ остался жестко привязанным к f2, тогда как f1, являющийся новым файлом, больше нигде не связан.

Я не знаю, есть ли в emacs настройки для изменения этого поведения.