Như mọi khi trong Linux, có nhiều hơn một cách để hoàn thành công việc. Tuy nhiên, nếu bạn cần làm điều đó từ CLI, đây là phương pháp ưa thích của tôi:
Tôi bắt đầu bằng cách chạy cái này với quyền root hoặc với sudo:
du -cha --max-depth=1 / | grep -E "M|G"
Grep là để giới hạn các dòng trả về cho những dòng trả về có giá trị trong phạm vi Megabyte hoặc Gigabyte. Nếu đĩa của bạn đủ lớn, bạn cũng có thể thêm |T
vào để bao gồm số lượng Terabyte. Bạn có thể nhận được một số lỗi trên /proc
, /sys
và / hoặc /dev
vì họ không phải là tệp thực trên đĩa. Tuy nhiên, nó vẫn nên cung cấp đầu ra hợp lệ cho phần còn lại của các thư mục trong root. Sau khi bạn tìm thấy những cái lớn nhất, bạn có thể chạy lệnh bên trong thư mục đó để thu hẹp thủ phạm. Vì vậy, ví dụ, nếu /var
là lớn nhất bạn có thể làm như thế này tiếp theo:
du -cha --max-depth=1 /var | grep -E "M|G"
Điều đó sẽ dẫn bạn đến vấn đề trẻ em!
Xem xét bổ sung
Trong khi lệnh trên chắc chắn sẽ thực hiện được mánh khóe, tôi đã có một số lời chỉ trích mang tính xây dựng trong các bình luận bên dưới chỉ ra một số điều bạn cũng có thể đưa vào.
- Giá trị
grep
tôi cung cấp có thể dẫn đến giá trị "K" không thường xuyên được trả về nếu tên của thư mục hoặc tệp có chữ G hoặc M. Nếu bạn hoàn toàn không muốn bất kỳ thư mục có giá trị K nào hiển thị bạn muốn lên trò chơi regex của bạn để sáng tạo và phức tạp hơn. ví dụgrep -E "^[0-9\.]*[MG]"
Nếu bạn biết ổ đĩa nào là vấn đề và nó có ổ đĩa gắn trên đầu khác mà bạn không muốn lãng phí thời gian kể cả trong tìm kiếm của mình, bạn có thể thêm -x
cờ vào du
lệnh của mình . Mô tả trang Man của cờ đó:
-x, --one-file-system
skip directories on different file systems
Bạn có thể sắp xếp đầu ra của du
lệnh sao cho giá trị cao nhất nằm ở dưới cùng. Chỉ cần nối phần này vào cuối lệnh:| sort -h