Kích thước của điểm số của một liên kết tượng trưng cho đầu ra ls là gì?


11

Tôi sẽ bắt đầu bằng ví dụ:

$ 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 là một liên kết tượng trưng của tệp file

Ngoài ra, như tôi biết 1650sẽ là kích thước của tập tin file, nhưng số 7được đặt dưới cột kích thước là gì?

EDIT: Đang chạy du:

$ du -sh symfile
0   symfile

Vậy làm thế nào bạn có thể chứng minh rằng 7 là kích thước symlink?!


CẬP NHẬT:

thử đi

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

lưu ý rằng kích thước cũng ở đây 0.

Hiện nay:

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

Vì vậy, tôi cho rằng nó không chỉ có kích thước


2
Điều này 7phụ thuộc vào hệ thống tập tin (và có thể các tham số khác). Đó là 7 trên ext4, nhưng có thể là 13 trên btrfs và 3 trên tmpfs.
muru

1
Đó là một kích thước, nhưng kích thước phụ thuộc vào hệ thống tệp (btrfs có thể lưu trữ nhiều siêu dữ liệu hơn ext4 và ext4 nhiều hơn tmpfs). Bạn có thể điền vào đĩa của bạn với các liên kết. Tôi chỉ nói, đừng ngạc nhiên nếu bạn thấy một số khác trên một hệ thống tập tin khác.
muru


1
Mục nhập thư mục của bạn có kích thước tối thiểu với nó, lớn hơn nó cần. Thực hiện đủ các mục và kích thước của thư mục sẽ tăng lên. Kiểm tra với : mkdir foo; ls -ld foo; for i in {1..1000}; do ln -s foo/bar foo/$i; done; ls -ld foo.
muru

Câu trả lời:


13

Các liên kết tượng trưng lấy phòng để lưu trữ tên và mục tiêu cộng với một vài byte cho các siêu dữ liệu khác.

Vì vậy, nó là kích thước của symlink.

Về kích thước từ du -sh: du chỉ xem có bao nhiêu khối được phân bổ, và do đó có thể hiển thị 0. statls -ltốt hơn trong việc hiển thị kích thước trong vấn đề đó.


vậy thì tại sao du -sh symfilelại cho 0? -
Maythux

du chỉ nhìn vào có bao nhiêu khối được phân bổ, và do đó có thể hiển thị 0. stat và ls -l thông minh hơn.
Rinzwind

Vui lòng đọc bản cập nhật
Maythux

Xem câu trả lời của tôi: đó là tên, mục tiêu và một số siêu dữ liệu. Tổng cộng nó chiếm tới 7 byte. Hệ điều hành khác lưu trữ siêu dữ liệu khác và do đó sẽ có kích thước khác.
Rinzwind

Câu hỏi là "Làm thế nào bạn có thể CHỨNG MINH CNTT?"
Pilot6

5

Nó là kích thước của symlink tính bằng byte.

Một số hệ thống tệp có một khu vực nhỏ bên trong mục nhập thư mục được sử dụng cho phần đầu của tệp, giúp tăng tốc đáng kể việc xử lý các liên kết tượng trưng và đọc nhỏ (nghĩ file) với chi phí của các mục nhập thư mục lớn hơn.

Nếu toàn bộ nội dung symlink phù hợp với mục nhập thư mục, thì không có khối dữ liệu nào được phân bổ và dukích thước hiển thị là 0. Nếu liên kết tượng trưng không phù hợp, không gian được phân bổ bình thường (vì vậy bạn kết thúc bằng một phân bổ khối duy nhất), có thể được tối ưu hóa bởi hệ thống tệp bằng cách sử dụng kết hợp đuôi (nhưng không có API duđể biết về điều này).

Hệ ext4thống tập tin thực hiện tối ưu hóa này chỉ cho các liên kết tượng trưng, ​​các tiêu chí được tìm thấy trong hàm ext4_inode_is_fast_symlink .


" Một số hệ thống tệp ... " - câu trả lời của bạn sẽ được cải thiện nếu bạn liệt kê các hệ thống tệp phổ biến có tính năng này (và bất kỳ hệ thống phổ biến nào không có).
RM

1

Đây là kích thước của tệp symlink theo byte.

Tệp Symlink là một tệp bình thường lưu trữ dữ liệu liên quan đến tệp mà nó đang trỏ tới. Trong ext 4 nó là 7 byte.


kích thước trong những gì? nó là byte hay bit hay gì?
Maythux

Kích thước tính theo byte ..
Pilot6

1
vậy thì tại sao du -sh symfilelại cho 0?
Maythux

du không được chỉ định với các tập tin rất nhỏ. Hãy thử sử dụng du tại một số tệp 99 byte. Nó sẽ hiển thị 4.0K.
Pilot6

đó cũng là pioint của tôi, ít nhất nó cũng phải hiển thị 4k cho liên kết tượng trưng vì trong khái niệm hệ điều hành, nó đã đăng ký một cụm cho tệp này
Maythux
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.