Giới thiệu

Với người dùng Linux, rất có thể bạn đã có lần giống mình, đó là khi kiểm tra dung tích một tập tin/thư mục lần lượt bằng câu lệnh ls ( exa alternative) tốt du (disk usage) thì nhận được hai hiệu quả khác nhau.

Bạn đang xem: Ls là đơn vị gì

Ví dụ cùng với câu lệnh sau:

echo "1" > foo.txt; exa -lh foo.txt |awk "print $2"; du foo.txt; du -h foo.txt# alternativeecho "1" > foo.txt; ls -l foo.txt |awk "print $5"; ls -ls foo.txt | awk "print $1"; ls -lsh foo.txt | awk "print $1"Ta được kết quả:

# exa# Mình cần sử dụng exa ráng cho ls command sinh sống đây bởi vì exa show header, tiện hơn cho vấn đề đọc còn về bản chất hai câu lệnh này là như nhau.Size2# kích thước in blocks4foo.txt# human-readable size4,0Kfoo.txtĐến đây chúng ta cũng có thể thấy rằng, hai câu lệnh này không hẳn cho hai kết quả khác nhau cơ mà là mình đã hiểu sai ý nghĩa sâu sắc thực sự của chúng. Đó là câu lệnh danh mục (ls | exa) cho họ biết kích khuôn khổ của nội dung cất trong file cùng câu lệnh du cho họ biết file chỉ chiếm bao nhiêu dung lượng lưu trữ bên trên ổ cứng. Tuy nhiên thì những số lượng trên trông có vẻ không được thuyết phục lắm.

Size = 2KB cho dù chỉ bao gồm một ký tự.

Nếu coi những đánh giá và nhận định trên là đúng, thì file kích thước chỉ là 1KB , bản thân đoán là file có chứa thêm cam kết tự đặc biệt quan trọng ngoài tiên phong hàng đầu nên mới xảy ra sự sai khác ví như trên. Bọn họ thử xem hexdump của file này xem gồm gì đặc biệt quan trọng không nhé.

Xem thêm: Ghê Người Với 14 Bí Ẩn Chưa Có Lời Giải Thích, Những Bí Ẩn Trên Thế Giới Chưa Có Lời Giải Đáp

hexyl foo.txt# alternativexxd foo.txthexdump -C foo.txtTa được kết quả

*

Check giá trị Hex:

*

Hóa ra là không tính số 1 còn tồn tại dấu xuống cái nữa. Còn nguyên nhân lại núm thì mình chưa rõ =)) nếu như bạn không cần sử dụng câu lệnh echo mà lại tự sinh sản file rồi điền số 1 vào một trong những cách cẩn trọng thì tác dụng vẫn y hệt.

Disk usage = 4KB.

Câu lệnh du -h foo.txt hoàn toàn có thể viết lại một giải pháp tương đương:

du --block-size=1024 foo.txtTrong kia 1024 là mặc định block kích cỡ như được miêu tả trong man page:

man du-B, --block-size=SIZE scale sizes by size before printing them; e.g., "-BM" prints sizes in units of 1,048,576 bytes; see kích thước format below Display values are in units of the first available kích thước from --block-size, and the DU_BLOCK_SIZE, BLOCK_SIZE & BLOCKSIZE environment variables. Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set).Đầu tiên chúng ta phải gọi rằng, khi nói tới size của một file thì chúng ta dùng đơn vị chức năng là byte như là đơn vị nhỏ nhất có thể đo lường được. Còn khi kể đến disk usage của một file thì bọn họ phải dùng đơn vị chức năng block-size, đây đó là đơn vị nhỏ tuổi nhất là kernel hoàn toàn có thể đọc/ghi data bên trên hard-drive. Mặc dù block-size=1024 nghỉ ngơi trên là block-size theo quy cầu của câu lệnh du, còn block-size của hard-drive thì chúng ta có thể kiểm tra cùng với câu lệnh tune2fs như sau:

*

Điều này còn có nghĩa rằng dù chúng ta có tạo nên một empty tệp tin đi chăng nữa thì cũng cần allocate 4KB disk space mang đến nó. Với ext4 tệp tin system thì 4KB block-size là cực hiếm mặc định, quý hiếm này tăng mạnh từ các khối hệ thống file system ext2, ext3 trước kia để giành được hiểu quả thực hiện tối ưu.

*

Directory size

Có một vụ việc khác tương quan đến việc check directory kích cỡ bằng ls command nhưng bởi vì có kỹ năng và kiến thức liên quan cho VFS (Virtual file System) nên mình xin được viết tại một bài khác .