Tổng mức sử dụng đĩa cho một người dùng cụ thể


11

Tôi muốn xem tổng mức sử dụng đĩa cho chính mình trên một hệ thống tệp cụ thể. Tôi đã thực hiện lệnh

du -h ~my_user_name

Tuy nhiên, điều này liệt kê mọi thư mục thuộc sở hữu của my_user_name. Tôi muốn có được tổng số của tất cả các thông tin này. Lựa chọn thích hợp để vượt qua là gì? Tôi đã thử

du -h -c ~my_user_name

nhưng điều đó đã không làm việc.

Câu trả lời:


11

Chuyển -sđến dusẽ giới hạn đầu ra chỉ các mục được chỉ định trên dòng lệnh.

du -sh ~

9

Du sẽ chỉ hiển thị cho bạn tổng số trên mỗi thư mục, không phải cho mỗi người dùng.

Điều đó có thể hoạt động nếu bạn muốn tổng kích thước của, /home/example_user/và nếu chỉ example_user đó có các tệp trong thư mục đó. Nếu người dùng khác có tệp trong đó thì điều này sẽ không mang lại kích thước của tất cả các tệp do bạn sở hữu, nhưng tổng kích thước của tất cả các tệp trong thư mục đó.

Để có được thông tin trên mỗi người dùng, một trong hai:

  1. Nếu bạn đã bật hạn ngạch , hãy sử dụng các lệnh đó.
  2. Sử dụng find để đi bộ mặc dù tất cả các thư mục bạn muốn đếm các tệp của mình. Sử dụng uid để chỉ chọn các tệp của bạn và giữ một mảng kết hợp trong awk để đếm tổng số.

find /path/to/search/ -user username_whos_files_to_count -type f -printf "%s\n" | awk '{t+=$1}END{print t}'

Lưu ý, điều này sử dụng một phần mở rộng tìm GNU cụ thể.

  • Lệnh đầu tiên tìm kiếm qua tất cả các tệp và thư mục trong /path/to/search/.
  • -type fđảm bảo bạn chỉ chọn các tệp, nếu không bạn cũng đang đếm kích thước của các thư mục. (Hãy thử tạo một thư mục trống. Nó có thể sẽ sử dụng không gian đĩa 4k).
  • -user username_whos_files_to_count chỉ chọn kết quả từ một người dùng
  • -printf "%s\n" sẽ in kích thước.

Nếu bạn chỉ chạy phần đầu tiên này, bạn sẽ nhận được một danh sách các số. Đó là những kích cỡ tập tin. (Mọi thứ khác bị tước, chỉ có kích thước được in nhờ lệnh in% s.)

Sau đó chúng ta có thể thêm tất cả những con số đó để có được một bản tóm tắt. Trong ví dụ này, điều này được thực hiện với awk.


+1 điểm tốt, cảm ơn! câu trả lời dưới đây thực sự là chính xác những gì tôi muốn. sự phân biệt người dùng / thư mục không quan trọng lắm trong trường hợp của tôi
Alex

Đẹp. du -schlà một lệnh dễ dàng thường được sử dụng. Theo dõi những người sở hữu những gì khi mọi thứ được trộn lẫn khó khăn hơn rất nhiều mặc dù nó có thể được thực hiện như một lớp lót. Tôi đã sử dụng nó một lần, nhưng tôi gặp khó khăn khi xây dựng lại nó ngày hôm nay.
Hennes

Đã giúp tôi rất nhiều, Giải thích hoàn hảo
Babin Lonston

2

Để tìm tất cả việc sử dụng bởi một người dùng cụ thể, một lệnh tốt là:

find -user $USER -type f -exec du -chs {} +

Bạn có thể sửa đổi thêm tùy thuộc vào nhu cầu cụ thể, ví dụ tôi thường muốn tóm tắt việc sử dụng theo thư mục và các thao tác sau đây hoạt động tốt:

find . -maxdepth 1 -user $USER -type d ! -path . -exec du -chs {} +

Điều này chỉ tìm thấy các thư mục ở một cấp độ, giới hạn bởi người dùng, loại trừ thư mục mẹ và in từng thư mục và một bản tóm tắt ở cuối.

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.