方法1
bash -c 'du -ah / | sort -hr | head -n 10' 2>/dev/null
du -ah / 2>/dev/null | sort -hr | head -n 10
方法2
bash -c 'find / -print0 | xargs -0 du -h | sort -hr | uniq | head -n 10' 2>/dev/null
方法3
bash -c 'find / -exec du -h {} + | sort -hr | uniq | head -n 10' 2>/dev/null
找出最占硬盘空间的10个目录或文件的三个方法
如何找出最占硬盘空间的10个目录
方法1
bash -c 'du -h / | sort -hr | head -n 10' 2>/dev/null
方法2
bash -c 'find / -type d -print0 | xargs -0 du -h | sort -hr | uniq | head -n 10' 2>/dev/null
方法3
bash -c 'find / -type d -exec du -h {} + | sort -hr | uniq | head -n 10' 2>/dev/null
找出最占硬盘空间的10个目录的三个方法
如何找出最占硬盘空间的10个文件
方法1
bash -c 'find / -type f -print0 | xargs -0 du -h | sort -hr | head -n 10' 2>/dev/null
bash -c 'find / -type f -size +90M -print0 | xargs -0 du -h | sort -hr | head -n 10' 2>/dev/null
方法2
bash -c 'find / -type f -exec du -h {} + | sort -hr | head -n 10' 2>/dev/null
bash -c 'find / -type f -size +90M -exec du -h {} + | sort -hr | head -n 10' 2>/dev/null
找出最占硬盘空间的10个文件的两个方法
du命令的使用场景
估算某个目录、该目录下的所有子目录各自占用多少硬盘空间(不含该目录下的子文件)
# 不加-a,说明只估算所有子目录,不估算所有子文件
bash -c 'du -h / | sort -hr | head -n 50' 2>/dev/null
估算某个目录、该目录下的所有子目录、该目录下的所有子文件各自占用多少硬盘空间
# 加了-a,说明除了估算所有子目录之外,还要估算所有子文件
bash -c 'du -ah / | sort -hr | head -n 50' 2>/dev/null
估算一个目录占用多少硬盘空间(不含该目录下的所有子目录和子文件)
root@hgdm:~# du -sh / 2>/dev/null
8.5G /
估算一个目录下的所有一级子目录、所有一级子文件各自占用多少硬盘空间
root@hgdm:~# du -sh /* 2>/dev/null | sort -hr
4.0G /var
3.0G /usr
948M /swapfile
381M /data
138M /boot
104M /root
6.5M /etc
2.6M /home
692K /run
64K /tmp
16K /lost+found
12K /media
4.0K /srv
4.0K /opt
4.0K /mnt
0 /sys
0 /sbin
0 /proc
0 /libx32
0 /lib64
0 /lib32
0 /lib
0 /dev
0 /bin
估算一个文件占用多少硬盘空间
root@hgdm:~# du -h /var/log/nginx/access.log
48K /var/log/nginx/access.log
估算多个文件各自占用多少硬盘空间
root@hgdm:~# du -h /var/log/nginx/access.log /root/examples/data111.txt
48K /var/log/nginx/access.log
4.0K /root/examples/data111.txt
du命令的常用命令选项
- -a: 加-a则输出结果=某个目录 + 子目录 + 子文件(含子文件),不加-a则输出结果 = 某个目录 + 子目录(不含子文件)。
- -s: 英文单词是summary或simple,意思是,加-s则输出结果既不含子目录也不含子文件。
- -h: 英文单词是human-readable,指以人类可读的方式输出结果,单位为T、G、M、K。
需要注意的问题1
当使用du -sh命令估算两个或两个以上的目录的空间使用情况时,当这些待估算目录存在隶属关系或父子关系时,不会得到想到的结果。
示例命令执行结果如下:
root@hgdm:~# du -sh /var /etc
4.0G /var
6.5M /etc
root@hgdm:~# du -sh /var /var/lib/mysql
4.0G /var
root@hgdm:~# du -sh /var/lib/mysql /var
2.6G /var/lib/mysql
1.4G /var
执行du -sh命令有时会得不到想要的结果
需要注意的问题2
以下两个命令得到的结果是不相同的
bash -c 'du -sh /* | sort -hr | head -n 10' 2>/dev/null
bash -c 'du -sh /* | sort -nr | head -n 10' 2>/dev/null
命令执行详情
root@hgdm:~# bash -c 'du -sh /* | sort -hr | head -n 10' 2>/dev/null
3.9G /var
3.0G /usr
948M /swapfile
381M /data
138M /boot
104M /root
6.5M /etc
2.6M /home
692K /run
64K /tmp
root@hgdm:~# bash -c 'du -sh /* | sort -nr | head -n 10' 2>/dev/null (通过眼睛就可以发现,没找到最占硬盘空间的3.9G目录)
948M /swapfile
692K /run
381M /data
138M /boot
104M /root
64K /tmp
16K /lost+found
12K /media
6.5M /etc
4.0K /srv