2017-12-13 25 views
0

파일을 만들었다 고 가정 해 봅시다. 새로운 inode가 생성되었습니다. 그런 다음 해당 파일에 대한 소프트 링크를 만들고 하드 링크를 삭제했습니다.파일을 삭제할 때 실제로 일어나는 일

아이 노드가 여전히 존재합니까? 그것은 메모리의 동일한 위치를 가리 킵니까? 소프트 링크가 메모리에 연결된 inode에 연결되어있어 파일을 찾지 못하거나 소프트 링크가 아이 노드에 대한 연결을 잃어 버리지 않습니까?

감사합니다.

답변

1

이것은 논외 더 이상의 질문,하지만입니다 :

리눅스에서의 소프트 링크는 아이 노드에 연결되어 있지 않습니다. 그것은 단지 파일의 이름을 가지고 있습니다. (소프트 링크의 크기를보십시오? 그것은 이름의 길이가 링크입니다!). 원본 이름을 바꾸어도 링크가 끊어집니다.

[[email protected] link]$ touch foo 
[[email protected] link]$ ln -s foo bar 
[[email protected] link]$ ls -la 
lrwxrwxrwx 1 bart bart 3 Dec 13 21:09 bar -> foo 
-rw-rw-r-- 1 bart bart 0 Dec 13 21:09 foo 
[[email protected] link]$ mv foo foo2 
[[email protected] link]$ ls -la 
lrwxrwxrwx 1 bart bart 3 Dec 13 21:09 bar -> foo 
-rw-rw-r-- 1 bart bart 0 Dec 13 21:09 foo2 
[[email protected] link]$ cat bar 
cat: bar: No such file or directory 

파일을 삭제하면 inode가 사라집니다.

1

아이 노드가 없어집니다. inode는 하나 이상의 하드 링크가있는 한 계속 존재합니다. 소프트 링크는 효과가 없습니다. 소프트 링크는 사실 별개의 파일입니다. 하드 링크는 동일한 파일에 대한 또 다른 포인터입니다. 하드 링크 수가 0이되면 inode가 삭제됩니다.

메모리가 덮어 쓰이지 않는 한 계속해서 존재하므로 (디스크 복구 도구가이를 얻을 수 있습니다) 운영 체제가 고려되는 한 메모리는 사용할 수 있습니다. 재사용.