Co oznacza "rozmiar" dowiązania symbolicznego na wyjściu ls?

10

Zacznę od przykładu:

$ ls -l dir1
total 4
-rw-r--r-- 4 maythux maythux 1650 2008-01-10 16:33 file
lrwxrwxrwx 1 maythux maythux  7 2008-01-15 15:17 symfile -> file

symfile jest dowiązaniem symbolicznym do pliku file

Również wiem, że 1650 byłby wielkości pliku file , ale jaka jest liczba 7 , która jest ułożona w kolumnie rozmiaru?

EDYCJA: Uruchomiono du :

$ du -sh symfile
0   symfile

Jak więc udowodnić, że 7 to rozmiar dowiązania symbolicznego?!

AKTUALIZACJA:

Spróbuj tego

$ touch file
$ du -sh file
0 file
$ ls -l file
-rw-rw-r-- 1 maythux maythux 0 Jun  1 19:42 file

zauważ, że rozmiar jest tutaj również 0.

Teraz:

$ ln -s file sym
$ du -sh sym
0 sym
$ ls -l sym
lrwxrwxrwx 1 maythux maythux 4 Jun  1 19:44 sym -> file

Przypuszczam, że to nie tylko rozmiar

    
zadawane Maythux 01.06.2015, 18:23
źródło

3 odpowiedzi

12

Dowiązania symboliczne zajmują tyle miejsca, ile potrzeba, aby zapisać nazwę i cel oraz kilka bajtów dla innych metadanych.

Jest to rozmiar dowiązania symbolicznego.

Jeśli chodzi o rozmiar z du -sh : du analizuje tylko liczbę bloków przydzielonych, więc może pokazać 0 stat , a ls -l lepiej pokazuje wielkość pod tym względem.

    
odpowiedział Rinzwind 01.06.2015, 18:27
źródło
4

Jest to rozmiar dowiązania symbolicznego w bajtach.

Niektóre systemy plików mają mały obszar wewnątrz wpisu katalogu, który jest używany na początku pliku, co znacznie przyspiesza przetwarzanie dowiązań symbolicznych i małych odczytów (pomyśl file ) kosztem większych wpisów katalogu.

Jeśli cała treść dowiązania symbolicznego pasuje do pozycji katalogu, nie są przydzielane bloki danych, a rozmiar du ma wartość zero. Jeśli dowiązanie symboliczne nie pasuje, miejsce jest przydzielane normalnie (co kończy się pojedynczym przydziałem bloku), który może być zoptymalizowany przez system plików za pomocą łączenia ogonów (ale nie ma interfejsu API dla du , aby wiedzieć o tym).

System plików ext4 wykonuje tę optymalizację tylko dla dowiązań symbolicznych, kryteria znajdują się w funkcji ext4_inode_is_fast_symlink .

    
odpowiedział Simon Richter 01.06.2015, 21:14
źródło
0

To jest rozmiar pliku dowiązań symbolicznych w bajtach.

Plik symlink jest zwykłym plikiem przechowującym dane dotyczące miejsca, do którego prowadzi dany plik. W ext 4 jest to 7 bajtów.

    
odpowiedział Pilot6 01.06.2015, 18:26
źródło

Przeczytaj inne pytania na temat tagów