Lệnh df trong Linux

Trong bài viết trước, chúng ta đã tìm hiểu qua cách sử dụng lệnh du để tính kích thước không gian đĩa đã được sử dụng, ở bài viết này, chúng ta sẽ tìm hiểu đến lệnh df để tính ra không gian lưu trữ còn trống của đĩa trên Linux.

 1. Cú pháp

$ df [OPTION]... [FILE]...

Khi không có đối số, df báo cáo không gian đã dùng và còn trống của tất các hệ thống tập tin đang được mount trên hệ thống. Ngược lại, df báo cáo kết quả của hệ thống tập tin chứa FILE.

Ví dụ:

$ df 
Filesystem    1K-blocks    Used    Available    Use%    Mounted on
/dev/sda2     45355056     3697896 39353212     9%      /
tmpfs         961232       0       961232       0%      /dev/shm
/dev/sda1     198337       25832   162265       14%     /boot
$ df test
Filesystem    1K-blocks    Used    Available    Use%    Mounted on
/dev/sda2     45355056     3697896 39353212     9%      /

Bình thường thì không gian đĩa được tính theo đơn vị 1024 byte, nhưng giá trị này có thể thay đổi. Những số không phải số nguyên  sẽ được làm tròn lên số nguyên lớn hơn tiếp theo.

2. Thiết lập đơn vị tính

Đơn vị mặc định của df là 1024 byte. Chúng ta có thể thay đổi giá trị này bằng cách sử dụng tùy chọn -B hay –block-size như sau:

$ df -B SIZE FILE

hoặc

$ df --block-size=SIZE FILE

Trong đó, SIZE có thể (hoặc là 1 số nguyên theo sau bởi) 1 trong các giá trị sau:

  • KB => 1000 byte
  • K => 1024 byte
  • MB => 1000*1000 byte
  • M=> 1024*1024 byte
  • và cứ thế cho các giá trị G (Gigabyte), T (Terabyte), P (Petabyte), E (Exabyte), Z (Zettabyte), Y (Yottabyte).

Nếu SIZE là 1 số nguyên và không theo sau bởi các hậu tố đã liệt kê ở trên, khi đó đơn vị tính sẽ là byte.

Ví dụ:

$ df --block-size=2 file

Đơn vị tính của lệnh trên là 2 byte.

Các tùy chọn khác liên quan đến đơn vị tính của df:

  • -k => tương đương với –block-size=1K
  • -m => tương đương với –block-size=1M

3. In ra tất cả hệ thống tập tin

Mặc định, df chỉ in ra các hệ thống tập tin có kích thước lớn hơn 0, và bỏ qua các hệ thống tập tin có kích thước bằng 0 (những hệ thống tập tin này được gọi là dummy file system).

$ df -h
Filesystem    Size    Used    Avail    Use%    Mounted on
/dev/sda2     44G     3.6G    38G      9%      /
tmpfs         939M    0       939M     0%      /dev/shm
/dev/sda1     194M    26M     159M     14%     /boot

Để in ra thông tin của tất cả các hệ thống tập tin đang có, bao gồm các các hệ thống tập tin có kích thước bằng 0, sử dụng tùy chọn -a hoặc –all như sau:

$ df -a -h
Filesystem    Size    Used    Avail    Use%    Mounted on
/dev/sda2     44G     3.6G    38G      9%      /
proc          0       0       0        -       /proc
sysfs         0       0       0        -       /sys
devpts        0       0       0        -       /dev/pts
tmpfs         939M    0       939M     0%      /dev/shm
/dev/sda1     194M    26M     159M     14%     /boot
none          0       0       0        -       /proc/sys/fs/binfmt_misc

Lưu ý:

Tùy chon trên chỉ có tác dụng khi lệnh df không có đối số. Trong trường hợp lệnh df có đối số, lệnh này sẽ chỉ in ra thông tin của hệ thống tập tin đang chứa đối số đó.

$ df -a -h file
Filesystem    Size    Used    Avail    Use%    Mounted on
/dev/sda2     44G     3.6G    38G      9%      /

4. Định dạnh kết quả xuất ra

Để kết quả xuất ra của df dễ hiểu hơn, chúng ta có thể sử dụng tùy chọn -h hay –human-readable trong du như sau:

$ df -k file
Filesystem    1K-blocks    Used    Available    Use%    Mounted on
/dev/sda2     45355056     3697904 39353204     9%      /
$ df -h file
Filesystem    Size    Used    Avail    Use%    Mounted on
/dev/sda2     44G     3.6G    38G      9%      /

Với:

  • K => tương đương với KB (1024 byte)
  • M => tương đương với MB (1024 KB)
  • G => tương đương với GB (1024 MB)

Tùy chọn này tương được với –block-size=human-readable

df --block-size=human-readable file
Filesystem    Size    Used    Avail    Use%    Mounted on
/dev/sda2     44G     3.6G    38G      9%      /

Ngoài ra, còn có 1 tùy chọn khác là –si, khi sử dụng tùy chọn này thì:

  • 1 KB = 1000 byte
  • 1 MB = 1000*1000 byte
  • … và cứ thế
$ df --si file
Filesystem    Size    Used    Avail    Use%    Mounted on
/dev/sda2     47G     3.8G    41G      9%      /

Tùy chọn này tương đương với –block-size=si hoặc -H

$ df --block-size=si file
Filesystem    Size    Used    Avail    Use%    Mounted on
/dev/sda2     47G     3.8G    41G      9%      /
$ df -H file
Filesystem    Size    Used    Avail    Use%    Mounted on
/dev/sda2     47G     3.8G    41G      9%      /

Để in ra thông tin trực tiếp của tập tin, thay cho hệ thống tập tin như mặc định, sử dụng tùy chọn –direct như sau:

$ df -h --direct file
Filesystem    Size    Used     Avail    Use%    File
-             44G     3.6G     38G      9%      /root/df_test/test1/file

Để in ra kích thước tổng của tất cả các đối số, sử dụng tùy chọn –total như sau:

$  df -h --direct --total file1 file2
Filesystem    Size    Used    Avail    Use%    File
-             44G     3.6G    38G      9%      /root/df_test/test1/file1
-             44G     3.6G    38G      9%      /root/df_test/test1/file2
total         87G     7.1G    76G      9%

Để in ra loại của hệ thống tập tin, sử dụng tùy chọn -T hoặc –print-type như sau:

$ df -h -T
Filesystem    Type    Size    Used    Avail     Use%    Mounted on
/dev/sda2     ext4    44G     3.6G    38G       9%      /
tmpfs         tmpfs   939M    0       939M      0%      /dev/shm
/dev/sda1     ext4    194M    26M     159M      14%     /boot

 5. Giới hạn các hệ thống tập tin

Mặc định, df sẽ thống kê thông tin của các hệ thống tập tin cục bộ và từ xa được mount trong hệ thống, để giới hạn việc thống kê này chỉ áp dụng cho  các hệ thống tập tin cục bộ, sử dụng tùy chọn -l hoặc –local như sau.

$ df -l FILE

hoặc

$ df --local FILE

Để giới hạn việc thống kê chỉ áp dụng cho 1 loại hệ thống tập tin nhất định, sử dụng tùy chọn -t FSTYPE hoặc –type FSTYPE. Nhiều loại hệ thống tập tin có thể được chỉ rõ bằng cách sử dụng nhiều tùy chọn -t hoặc –type. Mặc định thì tất cả các loại hệ thống tập tin đang có trên hệ thống đều được thống kê.

$ df -ahT
Filesystem    Type         Size    Used    Avail    Use%    Mounted on
/dev/sda2     ext4         44G     3.6G    38G      9%      /
proc          proc         0       0       0        -       /proc
sysfs         sysfs        0       0       0        -       /sys
devpts        devpts       0       0       0        -       /dev/pts
tmpfs         tmpfs        939M    0       939M     0%      /dev/shm
/dev/sda1     ext4         194M    26M     159M     14%     /boot
none          binfmt_misc  0       0       0        -       /proc/sys/fs/binfmt_misc
$ df -t ext4 -ahT
Filesystem    Type    Size    Used    Avail    Use%    Mounted on
/dev/sda2     ext4    44G     3.6G    38G      9%      /
/dev/sda1     ext4    194M    26M     159M     14%     /boot

Ngược lại, để bỏ qua việc thống kê trên 1 loại hệ thống tập tin nhất định, sử dụng tùy chọn -x FSTYPE hoặc –exclude-type=FSTYPE như sau:

df -x ext4 -ahT
Filesystem    Type          Size    Used    Avail    Use%    Mounted on
proc          proc          0       0       0        -       /proc
sysfs         sysfs         0       0       0        -       /sys
devpts        devpts        0       0       0        -       /dev/pts
tmpfs         tmpfs         939M    0       939M     0%      /dev/shm
none          binfmt_misc   0       0       0        -       /proc/sys/fs/binfmt_misc

Chúng ta kết thúc bài tìm hiểu về lệnh df trong Linux tại đây. Chúc các bạn thành công!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.