💡 Trong khi quản trị hệ thống Linux, ắt hẳn có nhiều lúc bạn cần tìm kiếm hoặc sắp xếp các file theo dung lượng. Ví dụ như một phân vùng của hệ thống có dung lượng quá lớn, bạn muốn biết các file nào có dung lượng lớn nhất, để cân nhắc có nên xóa đi để giải phóng dung lượng hay không
Trường hợp 1: Sắp xếp các file theo dung lượng giảm dần trong 1 thư mục
Bạn muốn sắp xếp các file theo dung lượng giảm dần. Hiển thị ra màn hình 5 file đầu tiên
$ ls -laS |grep "^-"| head -5
Kết quả trả ra như sau:
-rw-r--r--. 1 oracle oinstall 3453696911 Oct 7 2019 Oracle Database 12R2.zip
-rw-r--r--. 1 oracle oinstall 616912 Feb 8 06:52 awrrpt_1_27_30.html
-rw-r--r--. 1 oracle oinstall 513819 Feb 8 06:37 awrrpt_1_28_30.html
-rw-------. 1 oracle oinstall 6219 Apr 17 10:58 .viminfo
-rw-------. 1 oracle oinstall 5580 Apr 17 08:35 .ICEauthority
Trường hợp 2: Lấy ra các file lớn nhất cả ở trong các thư mục con
Đôi khi bạn cần biết các file lớn nhất ở trong toàn bộ các thư mục con. Trường hợp này thực tế rất hay gặp khi một phân vùng (ví dụ /u01) của bạn gần đầy, trong đó có chứa cả file và nhiều thư mục con. Bạn cần phải nhanh chóng biết những file lớn và thư mục cụ thể đang chứa chúng để có phương án xử lý.
$ find /u01 -ls |sort -nrk7|head -5
Kết quả trả ra như sau:
804203 1935372 -rw-r----- 1 oracle oinstall 1981816832 Apr 16 07:27 /u01/app/oracle/oradata/lab/system01.dbf
804274 624652 -rw-r----- 1 oracle oinstall 639639552 Apr 16 07:30 /u01/app/oracle/oradata/lab/sysaux01.dbf
930759 416184 -rw-r--r-- 1 oracle oinstall 426166074 Oct 7 2019 /u01/app/oracle/product/11.2.0/dbhome_1/lib/libserver12.a
930806 398552 -rwsr-s--x 1 oracle oinstall 408110137 Oct 7 2019 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
788431 274472 -rw-r----- 1 oracle oinstall 281059328 Jan 26 2017 /u01/app/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates/Seed_Database.dfb
Giải thích câu lệnh:
- sort -nrk7: Sắp xếp giảm dần theo cột thứ 7 (ở đây là cột về dung lượng)
Trường hợp 3: Tìm kiếm file dựa trên dung lượng
Bạn muốn tìm kiếm các file có dung lượng lớn hơn 10G ?
find . -size 10G
Bạn muốn tìm kiếm các file có dung lượng nhỏ hơn 10G ?
find . -size 10G
Tìm kiếm TOP 5 directory có dung lượng lớn nhất trong phân vùng /u01
$ du -S /u01 |sort -nr |head -5
3452548 /u01/app/oracle/oradata/lab
1944552 /u01/app/oracle/product/11.2.0/dbhome_1/lib
623464 /u01/app/oracle/product/11.2.0/dbhome_1/bin
411616 /u01/app/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates
344600 /u01/app/oracle/product/11.2.0/dbhome_1/javavm/jdk/jdk8/admin
Bạn muốn biết tổng dung lượng của một phân vùng ?
$ du -sh /u01
11G /u01
du -ahx /var/lib | sort -rh | head -n 30