Section 5.1: 检查目录在磁盘中的使用情况
有时候你可能需要找出哪个目录消耗了多少磁盘空间,特别是当您使用 df -h 发现到磁盘的可用空间很低的时候。这是你可以使用 du 命令。
du命令以递归方式汇总目录和文件集的磁盘使用情况。
它通常与 -sh 选项一起使用,下面是这两个选项的说明:
-s, --summarize 仅对每个命令行参数输出一个总使用量
-h, --human-readable 以可读性较好的格式输出大小(例如:1K 234M 2G)
为了总结当前目录下文件的磁盘使用情况,我们使用以下的命令来查看:
du -sh *
上面命令的执行结果:
demouser@demohosts:~$ du -sh *
4.0K 公共
4.0K 模板
4.0K 视频
4.0K 图片
4.0K 文档
4.0K 下载
4.0K 音乐
4.0K 桌面
524K snap
174M typecho
我们还可以使用以下命令包含隐藏文件:
du -sh .[!.]* *
上面命令的执行结果:
demouser@demohosts:~$ du -sh .[!.]* *
8.0K .bash_history
4.0K .bash_logout
4.0K .bashrc
16M .cache
136K .config
4.0K .lesshst
664K .local
4.0K .profile
4.0K .ssh
0 .sudo_as_admin_successful
12K .viminfo
4.0K .Xauthority
4.0K 公共
4.0K 模板
4.0K 视频
4.0K 图片
4.0K 文档
4.0K 下载
4.0K 音乐
4.0K 桌面
524K snap
174M typecho
Thirdly, you can add total to the output by adding ,-c, option:
第三,你可以通过添加 -c 选项来添加一个总计的结果:
du -sch .[!.]* *
执行结果如下:
demouser@demohosts:~$ du -sch .[!.]* *
8.0K .bash_history
4.0K .bash_logout
4.0K .bashrc
16M .cache
136K .config
4.0K .lesshst
664K .local
4.0K .profile
4.0K .ssh
0 .sudo_as_admin_successful
12K .viminfo
4.0K .Xauthority
4.0K 公共
4.0K 模板
4.0K 视频
4.0K 图片
4.0K 文档
4.0K 下载
4.0K 音乐
4.0K 桌面
524K snap
174M typecho
191M 总计
最重要的是,在根目录上正确地使用 du 命令可以帮助找出哪些应用程序/服务或用户正在疯狂地消耗磁盘空间。例如,如果web和邮件服务器的磁盘空间可用性非常低,原因可能是邮件服务受到垃圾邮件攻击,您可以使用 du 命令进行诊断。
调查根目录的磁盘使用情况:
sudo du -sch .[!.]* /*
执行结果的输出:
demouser@demohosts:~$ sudo du -sch .[!.]* /*
8.0K .bash_history
4.0K .bash_logout
4.0K .bashrc
16M .cache
136K .config
4.0K .lesshst
664K .local
4.0K .profile
4.0K .ssh
0 .sudo_as_admin_successful
12K .viminfo
4.0K .Xauthority
0 /bin
4.0K /bin.usr-is-merged
180M /boot
4.0K /cdrom
127M /data
0 /dev
13M /etc
202M /home
0 /lib
0 /lib64
4.0K /lib.usr-is-merged
16K /lost+found
8.0K /media
4.0K /mnt
16K /opt
du: 无法访问 '/proc/4947/task/4947/fd/4': 没有那个文件或目录
du: 无法访问 '/proc/4947/task/4947/fdinfo/4': 没有那个文件或目录
du: 无法访问 '/proc/4947/fd/3': 没有那个文件或目录
du: 无法访问 '/proc/4947/fdinfo/3': 没有那个文件或目录
0 /proc
88K /root
du: 无法访问 '/run/user/1000/doc': 权限不够
du: 无法访问 '/run/user/1000/gvfs': 权限不够
1.9M /run
0 /sbin
4.0K /sbin.usr-is-merged
3.2G /snap
4.0K /srv
3.9G /swap.img
0 /sys
220K /tmp
5.1G /usr
7.7G /var
21G 总计
最后,最好的方法是为目录添加一个阈值,以忽略较小的阈值。这个命令只会显示大于1GB的文件夹,它们位于你的文件系统的根目录下,直到整个目录树的最深层的分支:
sudo du --threshold=1G -ch /.[!.]* /*
执行结果的输出:
1,4G /usr/lib
1,8G /usr/share
3,5G /usr
5,8G total
Section 5.2: 检查磁盘空间
检查服务器/计算机上各种分区/驱动器的磁盘空间使用情况状态是很常见的运维操作。
你需要的就是下面的这行命令:
df -h
这将产生类似下面的输出:
demouser@demohosts:~$ df -h
文件系统 大小 已用 可用 已用% 挂载点
tmpfs 392M 1.8M 390M 1% /run
/dev/sda2 40G 18G 21G 46% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 392M 120K 392M 1% /run/user/1000
在这个示例中,我们可以看到 / 分区(根分区)已经有46%被使用。
有关使用 df 查看各种挂载点的更复杂的例子,请参见下面的代码:
sean@nas-smaba:~$ df -h
文件系统 大小 已用 可用 已用% 挂载点
tmpfs 392M 17M 375M 5% /run
/dev/sda3 59G 27G 29G 49% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 512M 6.2M 506M 2% /boot/efi
/dev/sdc1 458G 293G 143G 68% /mnt/usbdisk2
/dev/sdb2 466G 342G 124G 74% /mnt/usbdisk1
tmpfs 392M 208K 392M 1% /run/user/1000
在这个例子中,我们有一个 /mnt/usbdisk1 分区占了74%的空间,还有一个 /mnt/usbdisk2 分区只占68%的空间。它们分别来自硬盘 /dev/sdb 和 /etc/sdc 的第二个分区和第一个分区。