Để df
tính tổng, sử dụng --totals
tùy chọn. Nếu bạn chỉ muốn tổng số trên một số ổ đĩa được chọn, hãy chỉ định chúng làm đối số.
Ví dụ (và đầu ra từ máy tính của tôi)
Đây là tổng số cho tất cả các gắn kết địa phương:
$ df --total -hl
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 14G 12G 2,1G 85% /
none 490M 660K 489M 1% /dev
none 497M 1,5M 495M 1% /dev/shm
none 497M 260K 496M 1% /var/run
none 497M 0 497M 0% /var/lock
/dev/sda1 3,7G 418M 3,3G 12% /fastdisk
total 19G 12G 7,3G 62%
Giới hạn ở một vài ổ đĩa (lưu ý rằng nếu đường dẫn được chỉ định không phải là điểm gắn kết chính xác, điểm gắn kết chứa gần nhất được sử dụng [xem ghi chú ở cuối] ):
$ df -hl --total /home /fastdisk
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 14G 12G 2,1G 85% /
/dev/sda1 3,7G 418M 3,3G 12% /fastdisk
total 17G 12G 5,3G 69%
hoặc sử dụng dev
tên:
$ df -hl --total /dev/sda1 /dev/sdb1
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 3,7G 418M 3,3G 12% /fastdisk
/dev/sdb1 14G 12G 2,1G 85% /
total 17G 12G 5,3G 69%
Tùy chỉnh thêm
Nếu bạn muốn liệt kê tất cả các mount ngoại trừ các mount 'đặc biệt', bạn có thể sử dụng -x
tùy chọn để loại trừ theo loại phân vùng. (Sử dụng -T
tùy chọn để hiển thị các loại.)
Cá nhân, để sử dụng tương tác, tôi sử dụng bí danh bash sau (được thêm vào ~/.bash_aliases
) để loại trừ các gắn kết 'phi vật lý'.
alias df='df -h -x devtmpfs -x tmpfs -x debugfs'
Ghi chú
Việc chỉ định các đường dẫn trong các điểm gắn kết đôi khi có thể mang lại kết quả ở dạng khác nhau chỉ định đường dẫn chính xác đến điểm gắn kết. Ví dụ, trên máy tính xách tay của tôi, tôi sử dụng sshfs
để gắn máy chủ tệp (cục bộ) của mình.
df -h ~/.server-root/ ~/.server-root/disks/A ~/.server-root/disks/B
Filesystem Size Used Avail Use% Mounted on
johan@server:/ 185G 58G 118G 33% /home/johan/.server-root
johan@server:/ 1,9T 637G 1,2T 35% /home/johan/.server-root
johan@server:/ 1,8T 1,1T 757G 59% /home/johan/.server-root
Máy chủ gốc ( /
) được gắn kết tại ~/.server-root
. Tuy nhiên, trên máy chủ, các đĩa được gắn vào /disks/*
, mà df
(trên máy tính xách tay) không 'biết'.
Rõ ràng df
có thể liệt kê việc sử dụng đĩa trên các mount khác nhau trên máy chủ, nếu được cung cấp các đường dẫn thích hợp. Tuy nhiên, nó hiển thị cùng một hệ thống tập tin và cài đặt trên bộ dữ liệu và cài đặt trên các đường dẫn, vì (tôi tin) đó là điểm gắn kết duy nhất (liên quan đến giá trị sshfs
gắn kết này ) trong bảng gắn kết hạt nhân cục bộ.
Một điều nữa: Không thực sự liên quan đến câu hỏi, nhưng liên quan đến câu trả lời trước cho câu hỏi.
Thêm các số bằng một awk
tập lệnh (hoặc tương tự), giống như một số câu trả lời được đăng trước đó, không phải là một ý tưởng tốt khi sử dụng -h
cờ. Điều này là do xử lý đặc biệt là cần thiết. Bạn không thể chỉ làm size+=$2;
cho một lĩnh vực nằm 418M
trên một hàng và 12G
trên một lĩnh vực khác và nhận được một cái gì đó hữu ích từ nó.
Ví dụ với awk
, thêm 500M
vào 10.2G
năng suất
$ echo -e '500M\n10.2G' | awk '{size+=$1;} END{print size;}'
510.2
510,2 của cái gì?
Rõ ràng có một vấn đề ở đây. Vì vậy, chỉ là một mẹo cần nhớ , khi thực hiện tính toán (tự động) trên đầu ra của df
(và các số khác có thể sử dụng số 'con người có thể đọc được' ) . Thay vào đó, hãy đảm bảo rằng bạn không sử dụng -h
cờ và đầu vào cho tập lệnh tính toán, thay vào đó, được chuẩn hóa (ví dụ: theo byte, khối, KB hoặc bất cứ thứ gì) và thực hiện 'chia tỷ lệ hiển thị' ở cuối. Trong hầu hết các ngôn ngữ lập trình và lập trình, không khó để thêm một cái gì đó như:
If value < threshold Then
print (value),"B"
Else If value < 1024*threshold Then
print (value/1024),"kB"
Else If value < 1024*1024*threshold Then
print (value/1024/1024),"MB"
(and so on...)
trong đó giá trị tính bằng byte và ngưỡng là giá trị theo thứ tự 1000. Kết quả của phương pháp này là bạn có thể dễ dàng điều chỉnh nó để tạo ra các giá trị in (không bao gồm tiền tố) trong một phạm vi mong muốn và với một số chữ số có nghĩa lựa chọn. So với trường hợp với các tiện ích tiêu chuẩn có -h
công tắc, trong đó định dạng thường được cố định.
Tất nhiên, phép tính này thường có thể được thực hiện hiệu quả và / hoặc thanh lịch hơn, nhưng đó là một câu hỏi cho ngôn ngữ cụ thể được viết bằng. Thành thật mà nói, nếu nó được sử dụng trong tập lệnh người dùng chỉ chạy bây giờ và sau đó để xem tương tác một số thông tin, hiệu quả không thực sự là một mối quan tâm.