Vấn đề full disk chắc hẳn cũng sẽ gây nên một số rắc rối nhất định phải không các bạn? Đặc biệt là đối với các bạn mới tập làm quen với việc quản trị hệ thống server Linux.
Trong một số trường hợp, bạn cần tìm nhanh xem file hay thư mục nào đang chiếm nhiều dung lượng nhất trên ổ cứng. Và thông thường, chúng ta sẽ cần tìm ở một số thư mục chính có khả năng chiếm nhiều dung lượng như /tmp, /home hay /var.
Trên Linux không có lệnh đơn nào cho phép thống kê các file/thư mục chiếm nhiều dung lượng. Mặc dù vậy, bằng sự kết hợp của nhiều lệnh cơ bản (sử dụng câu lệnh ghép), bạn sẽ dề dàng tìm thấy những file/thư mục đang chiếm nhiều dung lượng nhất.
Chúng tôi xin chia sẻ một vài thao tác trên giao diện command của server như các gợi ý sau đây:
1.Sử dụng bằng lệnh df¶
[root@vinastar ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/cciss/c0d0p2 78361192 23185840 51130588 32% //dev/cciss/c0d0p5 24797380 22273432 1243972 95% /home/dev/cciss/c0d0p3 29753588 25503792 2713984 91% /data/dev/cciss/c0d0p1 295561 21531 258770 8% /boot
[root@vinastar ~]# df -aFilesystem 1K-blocks Used Available Use% Mounted on/dev/cciss/c0d0p2 78361192 23186116 51130312 32% /proc 0 0 0 - /procsysfs 0 0 0 - /sysdevpts 0 0 0 - /dev/pts/dev/cciss/c0d0p5 24797380 22273432 1243972 95% /home/dev/cciss/c0d0p3 29753588 25503792 2713984 91% /data/dev/cciss/c0d0p1 295561 21531 258770 8% /boottmpfs 257476 0 257476 0% /dev/shmnone 0 0 0 - /proc/sys/fs/binfmt_miscsunrpc 0 0 0 - /var/lib/nfs/rpc_pipefs
[root@vinastar ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/cciss/c0d0p2 75G 23G 49G 32% //dev/cciss/c0d0p5 24G 22G 1.2G 95% /home/dev/cciss/c0d0p3 29G 25G 2.6G 91% /data/dev/cciss/c0d0p1 289M 22M 253M 8% /boottmpfs 252M 0 252M 0% /dev/shmof /home
[root@vinastar ~]# df -hT /homeFilesystem Type Size Used Avail Use% Mounted on/dev/cciss/c0d0p5 ext3 24G 22G 1.2G 95% /home
View all Disk Partitions in Linux
[root@vinastar ~]# fdisk –lDisk /dev/sda: 637.8 GB, 637802643456 bytes255 heads, 63 sectors/track, 77541 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System/dev/sda1 * 1 13 104391 83 Linux/dev/sda2 14 2624 20972857+ 83 Linux/dev/sda3 2625 4582 15727635 83 Linux/dev/sda4 4583 77541 586043167+ 5 Extended
2.Sử dụng lệnh du :
Ví dụ: chúng ta sử dụng command sau để bắt đầu tìm 10 file/thư mục chiếm nhiều dung lượng nhất
[root@vinastar ~]#du -a /var | sort -n -r | head -n 101008372 /var313236 /var/www253964 /var/log192544 /var/lib152628 /var/spool152508 /var/spool/squid136524 /var/spool/squid/0095736 /var/log/mrtg.log74688 /var/log/squid62544 /var/cache
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 bạn muốn một kết quả tốt hơn, dễ hiểu hơn thì có thể thử nhiều phương án sau:
$ cd /path/to/some/where$ du -hsx * | sort -rh | head -10
Trong đó:
cd /path/to/some/where: là lệnh di chuyển tới đường dẫn của thư mục cần kiểm tra dung lượng.
Tham số -h (du -h): Hiện kết quả với định dạng quen thuộc với người dùng (ví dụ: 1K, 234M, 2G).
Tham số -s (du -s): Chỉ hiện thống kê chung kết quả kiểm tra của lệnh du.
Tham số -x (du -x): Bỏ qua thư mục khác định dạng file hệ thống của hệ điều hành.
Tham số -r (sort -r): Đảo ngược kết quả so sánh.
Tham số -h (sort -h): So sánh bằng tham số điều chỉnh đơn vị đo lường quen thuộc (K, M, G). Chỉ áp dụng cho lệnh sort cài thêm theo giấy phép phần mềm GNU.
Tham số -10 hoặc -n 10 (head -10 hoặc head -n 10): Hiển thị 10 dòng đầu tiên của kết quả tìm kiếm.
# du /home/wiki40 /home/wiki/downloads4 /home/wiki/.mozilla/plugins4 /home/wiki/.mozilla/extensions12 /home/wiki/.mozilla12 /home/wiki/.ssh689112 /home/wiki/Ubuntu-12.10689360 /home/wiki
# du -h /home/wiki40K /home/wiki/downloads4.0K /home/wiki/.mozilla/plugins4.0K /home/wiki/.mozilla/extensions12K /home/wiki/.mozilla12K /home/wiki/.ssh673M /home/wiki/Ubuntu-12.10du -sh /home/wiki674M /home/wikidu -a /home/wiki4 /home/wiki/.bash_logout12 /home/wiki/downloads/uploadprogress-1.0.3.1.tgz24 /home/wiki/downloads/Phpfiles-org.tar.bz240 /home/wiki/downloads12 /home/wiki/uploadprogress-1.0.3.1.tgz4 /home/wiki/.mozilla/plugins4 /home/wiki/.mozilla/extensions12 /home/wiki/.mozilla
# du -ah /home/wiki4.0K /home/wiki/.bash_logout12K /home/wiki/downloads/uploadprogress-1.0.3.1.tgz24K /home/wiki/downloads/Phpfiles-org.tar.bz240K /home/wiki/downloads12K /home/wiki/uploadprogress-1.0.3.1.tgz4.0K /home/wiki/.mozilla/pluginsdu -mh /home/wiki40K /home/wiki/downloads4.0K /home/wiki/.mozilla/plugins4.0K /home/wiki/.mozilla/extensions12K /home/wiki/.mozilla12K /home/wiki/.ssh673M /home/wiki/Ubudu -ch /home/wiki40K /home/wiki/downloads4.0K /home/wiki/.mozilla/plugins4.0K /home/wiki/.mozilla/extensions12K /home/wiki/.mozilla12K /home/wiki/.ssh673M /home/wiki/Ubuntu-12.10674M /home/wiki674M total
# du -ah --exclude="*.txt" /home/wiki (bỏ file .txt )4.0K /home/wiki/.bash_logout12K /home/wiki/downloads/uploadprogress-1.0.3.1.tgz24K /home/wiki/downloads/Phpfiles-org.tar.bz240K /home/wiki/downloads12K /home/wiki/uploadprogress-1.0.3.1.tgz4.0K /home/wiki/.bash_history4.0K /home/wiki/.bash_profile4.0K /home/wiki/.mozilla/plugins
# du -ha --time /home/wiki4.0K 2012-10-12 22:32 /home/wiki/.bash_logout12K 2013-01-19 18:48 /home/wiki/downloads/uploadprogress-1.0.3.1.tgz24K 2013-01-19 18:48 /home/wiki/downloads/Phpfiles-org.tar.bz240K 2013-01-19 18:48 /home/wiki/downloads12K 2013-01-19 18:32 /home/wiki/uploadprogress-1.0.3.1.tgz4.0K 2012-10-13 00:11 /home/wiki/.bash_history4.0K 2012-10-12 22:32 /home/wiki/.bash_profile
Hoặc tìm kiếm chi tiết các file dung lượng lớn như :
du -hs * $1 |sed 's/^\([0-9.]*\)\([KMG]*\)/\2 \1\2/s/^K/1/;s/^M/2/;s/^G/3/' |sort -g -k1 -k2n |cut -c3- |tail -$2
3.Sử dụng script :
Một script tìm kiếm những file với 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ụ : chúng ta thực hiện tìm những file có dung lượng lớn hơn 50MB tại thư mục hiện hành:
find . -type f -size +50000k -exec ls -lh {} \; | awk "{ print $9 ": " $5 }"
Search trong /var/log:
find /var/log -type f -size +100000k -exec ls -lh {} \; | awk "{ print $9 ": " $5 }"