Vấn đề
HĐH linux full disk là một vấn đề khá rắc rồi với những ai quản trị web trên Server Linux, VPS. Nguyên nhân có thể do các file log web, mail queue, log mail…. Vậy làm thế nào để tìm nhưng file hay thư mục nào đang chiếm nhiều dung lượng nhất trên ổ cứng. Thông thường chúng ta cần tìm ở một số thư mục chính như /tmp, /home, /var.
Trong bài này tôi xin chia sẻ một số câu lệnh quen thuộc mà tôi hay dùng:
1. Sử dụng lênh du
Ví dụ tôi muốn thống kê 10 file/ thư mục chiếm nhiều dung lượng nhất trong thư mục /var:
#du -a /var | sort -n -r | head -n 10
Với các thư mục khác thì tương tự bạn chỉ cần thay đường dẫn. Thường trong mục /var bạn nên để ý đến dung lượng của mấy file log trong đó.
- du: Tính dung lượng ổ cứng mà file/thư mục đang chiếm dụng.
- sort: Sắp xếp các dòng của một file text hoặc của dữ liệu truyền vào.
- output: Hiển thị phần đầu nội dung một file văn bản, ví dụ 10 dòng đầu tiên của kết quả sau sắp xếp sẽ là 10 file/thư mục chiếm nhiều dung lượng nhất
Nếu muốn chính xác hơn thì nên dùng cách sau:
# cd /duong_dan/thu_muc_muon_kiem_tra/
# du -hsx * | sort -rh | head -10
Các thông số liên quan:
-h (du -h): Hiển thị dung lượng quen thuộc (1K, 1M, 1G)
-s (du -h): Chỉ hiện thống kê chung kết quả kiểm tra của lệnh du
-x (du -x): Bỏ qua thư mục khác định dạng file hệ thống
-r (sort -r): Đảo ngược kết quả so sánh
-h (sort -h): So sánh bằng đơn vị đo lường quen thuộc (K, M, G). Tuy nhiên chỉ áp dụng cho lệnh sort cài đặt thêm theo giấy phép đi kèm (GNU)
-10 (-n 10): Hiển thị 10 dòng đầu tiên của kết quả tìm kiếm.
2. Lệnh df
# df: Kiểm tra dung lượng ổ cứng mà các file hệ thống sử dụng
# df -a: Hiển thị thông tin ổ đĩa các file hệ thống sử dụng
#df -h: Hiện thỉ dung lượng sử dụng dạng MB, GB
# df -hT /home: Hiển thị thông tin thư mục /home
# df -k: Hiển thị thông tin các file hệ thống theo bytes
# df -m: Hiển thị thông tin hệ thống theo MB
# df -h: Hiển thị thông tin hệ thống theo GB
# df -T: Xem thông tin định dạng file hệ thống
3. Sử dụng script:
Muốn tìm kiếm tất cả các file có dung lượng >MB bằng find với syntax:
# find {/path/to/directory/} -type f -size +{size-in-kb}k -exec ls -lh {} \; | awk “{ print $9 “: ” $5 }”
Ví dụ: Tìm trong tất cả các thư mục các file có dung dượng > 10MB
# find . -type f -size +10000k -exec ls -lh {} \; | awk “{ print $9 “: ” $5 }”
Tìm trong /var/log:
# find /var/log -type f -size +100000k -exec ls -lh {} \; | awk “{ print $9 “: ” $5 }”
0 Comments