Linux下使用df与du命令查看磁盘空间

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Linux下使用df与du命令查看磁盘空间

背景

项目正常运行,然后某一天出现静态资源拿不到,需要重复刷新或者管理后台登录不上的情况。项目没有报异常,没有出错。经过排查,是服务器磁盘空间不足造成的。

那就研究一下吧,这些东西是躲不过去也糊弄不过去的。


【1】df命令

df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。


语法

df(选项)(参数)


选项:

-a或--all:包含全部的文件系统;
--block-size=<区块大小>:以指定的区块大小来显示区块数目;
-h或--human-readable:以可读性较高的方式来显示信息;
-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
-i或--inodes:显示inode的信息;
-k或--kilobytes:指定区块大小为1024字节;
-l或--local:仅显示本地端的文件系统;
-m或--megabytes:指定区块大小为1048576字节;
--no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
-P或--portability:使用POSIX的输出格式;
--sync:在取得磁盘使用信息前,先执行sync指令;
-t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
-T或--print-type:显示文件系统的类型;
-x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;
--help:显示帮助;
--version:显示版本信息。


参数:

文件(路径):指定文件系统上的文件(路径)。


① df

[root@heheapp1 ~]# df
Filesystem           1K-blocks     Used Available Use% Mounted on
/dev/mapper/vg_heheapp1-lv_root
                      51475068 18838840  30014788  39% /
tmpfs                 16438268      228  16438040   1% /dev/shm
/dev/xvda1              487652    69103    392949  15% /boot
/dev/mapper/vg_heheapp1-lv_home
                      40645196   621912  37951940   2% /home

② df -h

(使用-h选项以KB以上的单位来显示,可读性高)

[root@heheapp1 ~]# df -h
列注释:文件系统          容量  已用 可用  已用% 挂载点
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_heheapp1-lv_root
                       50G   18G   29G  39% /
tmpfs                  16G  228K   16G   1% /dev/shm
/dev/xvda1            477M   68M  384M  15% /boot
/dev/mapper/vg_heheapp1-lv_home
                       39G  608M   37G   2% /home



③ df -a

[root@heheapp1 ~]# df -a
Filesystem           1K-blocks     Used Available Use% Mounted on
/dev/mapper/vg_app1-lv_root
                      51475068 18838332  30015296  39% /
proc                         0        0         0    - /proc
sysfs                        0        0         0    - /sys
devpts                       0        0         0    - /dev/pts
tmpfs                 16438268      228  16438040   1% /dev/shm
/dev/xvda1              487652    69103    392949  15% /boot
/dev/mapper/vg_app1-lv_home
                      40645196   621912  37951940   2% /home
none                         0        0         0    - /proc/sys/fs/binfmt_misc
none                         0        0         0    - /proc/xen
gvfs-fuse-daemon             0        0         0    - /root/.gvfs



④ df -h /opt

查看/opt 路径下文件磁盘空间情况:

[root@pc0 /]# df -h /opt
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        14G  6.1G  6.8G  48% /

【2】du命令查看指定目录磁盘空间

du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看。可以这样理解,df偏向于整体磁盘-宏观,du倾向于文件目录-微观。


语法格式

du [选项][文件]


选项:

-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k或--kilobytes 以KB(1024bytes)为单位输出。
-m或--megabytes 以MB为单位输出。
-s或--summarize 仅显示总计,只列出最后加总的值。
-h或--human-readable 以K,M,G为单位,提高信息的可读性。
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
--exclude=<目录或文件> 略过指定的目录或文件。
-D或--dereference-args 显示指定符号链接的源文件大小。
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
-l或--count-links 重复计算硬件链接的文件。
--max-depth=1 子目录深度
–help 显示帮助。
–version 显示版本信息。

① du

[root@app1 tomcat8086]# du //建议使用du -h ,以M为单位
56      ./webapps/host-manager/images
16      ./webapps/host-manager/WEB-INF/jsp
28      ./webapps/host-manager/WEB-INF
8       ./webapps/host-manager/META-INF
104     ./webapps/host-manager
56      ./webapps/manager/images
44      ./webapps/manager/WEB-INF/jsp
56      ./webapps/manager/WEB-INF
8       ./webapps/manager/META-INF
144     ./webapps/manager
252     ./webapps
7560    ./lib
4       ./work/Catalina/localhost/host-manager
12      ./work/Catalina/localhost/ROOT/org/apache/jsp
16      ./work/Catalina/localhost/ROOT/org/apache
20      ./work/Catalina/localhost/ROOT/org
24      ./work/Catalina/localhost/ROOT
68      ./work/Catalina/localhost/manager/org/apache/jsp/WEB_002dINF/jsp
72      ./work/Catalina/localhost/manager/org/apache/jsp/WEB_002dINF
92      ./work/Catalina/localhost/manager/org/apache/jsp
96      ./work/Catalina/localhost/manager/org/apache
100     ./work/Catalina/localhost/manager/org
104     ./work/Catalina/localhost/manager
136     ./work/Catalina/localhost
140     ./work/Catalina
144     ./work
4       ./conf/Catalina/localhost
8       ./conf/Catalina
244     ./conf
4       ./temp
816     ./bin
2144    ./logs
786908  ./hh
798160  .


只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的798160为当前目录的总大小,此时单位为kb。


② du [文件] - 显示指定文件所占空间

[root@app1 tomcat8086]# du ./logs/catalina.out
964     ./logs/catalina.out


③ 查看指定目录的所占空间

[root@app1 tomcat8086]# du ./hh
786976  ./hh

④ 只显示总和的大小

[root@app1 tomcat8086]# du -sh
780M

⑤ 深度为1–du -ach --max-depth=1 /opt

[root@bogon home]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        18G  8.3G  8.3G  50% /
tmpfs           491M  228K  491M   1% /dev/shm
/dev/sda1       283M   34M  234M  13% /boot
.host:/         100G   18G   83G  18% /mnt/hgfs
/dev/sdb1       2.0G  3.1M  1.9G   1% /home/sdb1
# 当前路径下,深度为1
[root@bogon home]# du --max-depth=1 ./
136768  ./mysql
28  ./sdb1
572 ./jane
540 ./janus
137912  ./
[root@bogon home]# 
#  指定路径  深度为1与2对比
[root@bogon home]# du -ach --max-depth=1 /opt
4.0K  /opt/rh
4.0K  /opt/java需要软件百度云.txt
12K /opt/test
14M /opt/www
14M /opt
14M total
[root@bogon home]# du -ach --max-depth=2 /opt
4.0K  /opt/rh
4.0K  /opt/java需要软件百度云.txt
8.0K  /opt/test/test2
12K /opt/test
8.3M  /opt/www/xc_train
5.3M  /opt/www/bysj
14M /opt/www
14M /opt
14M total
[root@VM-24-14-centos recruite8091]# du -h --max-depth=1 ./*
8.0K    ./application.properties
4.0K    ./clear.sh
8.0K    ./config.json
83M     ./recruit-0.0.1-SNAPSHOT.jar
4.0K    ./restart.sh
4.0K    ./stop.sh


查看某个目录的文件大小并排序:

du -hm --max-depth=1 /var/ | sort -n

【3】查看硬盘与分区信息

fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。


语法

fdisk(选项)(参数)

选项

-b<分区大小>:指定每个分区的大小;
-l:列出指定的外围设备的分区表状况;
-s<分区编号>:将指定的分区大小输出到标准输出上,单位为区块;
-u:搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址;
-v:显示版本信息。

参数

设备文件:指定要进行分区或者显示分区的硬盘设备文件。

查看硬盘分区信息

[root@iZ8vb3n2dl2w360w65xtf3Z ~]# fdisk -l
Disk /dev/vda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00020f78
Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        5222    41940992   83  Linux


【4】常用实践

① 统计/home文件夹下文件的个数

[root@bogon home]# ls -l /home|grep "^-"|wc -l
1
[root@bogon home]# ll
total 20
drwx------. 25 jane  jane    4096 Jun 14 07:06 jane
drwx------. 24 janus mygroup 4096 Jul  4 00:31 janus
-rw-r--r--.  1 root  root    2140 Jul 10 20:29 java需要软件百度云.txt
drwx------.  5 mysql mysql   4096 Jul  3 02:24 mysql
drwxr-xr-x.  4 root  root    4096 Jul  9 02:57 sdb1

② 统计/home文件夹下目录的个数

[root@bogon home]# ls -l /home|grep "^d"|wc -l
4

③ 统计/home文件夹下文件的个数,包括子文件夹里的

// R表示递归统计
[root@bogon home]# ls -lR /home|grep "^-"|wc -l
302

④ 统计/home文件夹下目录的个数,包括子文件夹里的

[root@bogon home]# ls -lR /home|grep "^d"|wc -l
27

⑤以树状显示目录结构

tree /home/

【5】df 与du显示空间不一致

背景:测试说磁盘空间不够了,df -h看了一下,200多G的硬盘占用100%。但是用du -sh /home看了一下只有103G。那么问题来了,另外100多G去哪里了?


使用lsof |grep deleted 命令检测如下图所示:

好了,发现问题了!Tomcat的apache-tomcat-8.5.37/logs/catalina.out143G没有彻底释放!重启Tomcat服务解决!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
44 14
Linux 10 个“who”命令示例
|
5天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
60 20
|
5天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
26 7
|
23天前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
监控 Shell Linux
[Linux监控]磁盘空间大小
echo 192.168.10.69>>ip.list ------------------------------------------- #!/bin/bash #注意if和[]之间的空格 rm -f ~/fanr/shell/DiskUsageAlert/out.
765 0
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
95 8
|
1月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
274 6
|
1月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
80 3
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
74 2