Gname

广告

DangYun

广告

Linux系统中使用df和du命令检查磁盘空间教程

美国云服务器推荐

网站无法上传文件、数据库提示写入失败,或者备份任务突然中断,都可能与服务器存储空间有关。遇到这类问题,先确认异常目录所在的文件系统,再查看占用来源,通常比直接清理整个日志目录更容易找准问题。

下面按照实际排查顺序,介绍Linux服务器上常用的查看方法。命令主要适用于安装GNU工具的Ubuntu、Debian、Rocky Linux等常见发行版。通过终端连接服务器后即可操作;示例输出为说明用的示意数据,实际结果以你的服务器为准。

一、如何在Linux中查看磁盘空间

查看当前挂载的文件系统:

df -h

-h会把容量显示为K、M、G等便于阅读的单位,采用1024进位。需要同时查看文件系统类型,可以使用:

df -hT

下面是输出示意:

Filesystem     Type Size Used Avail Use% Mounted on
/dev/vda1     ext4   50G   42G   5.5G   89% /

重点查看这些字段:

  • Filesystem:文件系统对应的设备或来源
  • Type:文件系统类型,添加-T后显示
  • Size:总容量
  • Used:已使用空间
  • Avail:可用空间
  • Use%:使用率
  • Mounted on:挂载目录

如果报错发生在某个目录,直接查询它所在的文件系统。例如,备份保存在/var下:

df -hT /var

这里查看的是/var所在文件系统的整体空间,不是/var目录自身的大小。一个目录可能位于根文件系统,也可能是独立的数据盘挂载点,要先分清这一点。

二、查看目录占用

确认根文件系统空间紧张后,可以查看根目录下一级目录的占用:

sudo du -x -h –max-depth=1 / | sort -hr

参数含义如下:

  • -x:统计时不跨越其他文件系统。
  • -h:使用便于阅读的容量单位。
  • –max-depth=1:显示指定目录及下一级目录的汇总。
  • sort -hr:按带容量单位的数值从大到小排列。

找到较大的目录后,继续向下查看。例如,/var占用较多:

sudo du -x -h –max-depth=1 /var | sort -hr

输出示意:

12G     /var
8.6G   /var/log
2.5G   /var/lib
700M   /var/cache
120M   /var/tmp

在这个例子中,可以继续检查日志目录:

sudo du -x -h –max-depth=1 /var/log | sort -hr

每一层都先看最大的几个目录,逐步缩小范围。输出中的父目录总量已经包含子目录,不需要把两者再次相加。

如果文件存放在独立挂载的数据盘中,把命令里的路径替换为该数据盘挂载点。使用-x扫描根目录时,独立数据盘里的文件不会被算进去。

目录扫描会产生磁盘读取,大目录可以在业务较空闲时检查,或者先从已知的日志、备份目录开始。

三、查看单个文件

知道具体文件路径后,可以查看它的空间占用:

sudo du -h /var/log/example.log

这里的example.log是示例文件名,使用时替换成实际路径。

如果想列出/var中大于512MiB的普通文件,可以执行:

sudo find /var -xdev -type f -size +512M -exec ls -lh — {} +

这条命令会显示文件路径、大小和时间等信息,方便判断它是日志、压缩包、备份还是业务文件。find的大小筛选依据是文件的逻辑大小,与du显示的实际分配空间可能不同。

定位后,按文件用途处理:

  • 日志文件检查增长原因和轮转规则,并按保留周期归档。
  • 历史备份确认已有有效副本,再调整保留数量。
  • 应用缓存使用应用提供的清理方式。
  • 数据库数据文件通过对应数据库工具维护。

四、ncdu使用场景

ncdu可以在终端中展示目录占用,适合不想反复输入du命令的用户。需要先安装该工具。

Ubuntu、Debian可使用:

sudo apt update
sudo apt install ncdu

其他发行版按自己的软件包管理方式安装。安装后,扫描/var:

sudo ncdu -rr -x /var

-x限制扫描范围为当前文件系统;-rr关闭内置删除和启动Shell的功能,适合用来查看占用。扫描完成后,使用方向键选择目录、回车进入,按q退出。

五、当Linux磁盘空间不足时该怎么办

1. 检查inode是否耗尽

大量小文件可能耗尽inode,即使磁盘仍有剩余容量,也会影响新文件创建。查看根文件系统的inode使用情况:

df -i /

关注IFree和IUse%。如果空闲inode很少,可以统计一级目录使用的inode数量:

sudo du –inodes -x –max-depth=1 / | sort -nr

这次结果表示inode数量,不是文件容量。继续查看数量较高的目录,重点检查缓存、会话文件、邮件队列和临时文件等位置。

2. 检查已删除但仍被进程打开的文件

有时日志文件已经删除,df显示的可用空间却没有明显增加。文件可能仍被运行中的进程打开,空间尚未释放。

如果服务器安装了lsof,可以查看这类文件:

sudo lsof +L1

结合进程名称、文件大小和路径定位相关服务。确认原因后,按服务支持的方式重新打开日志,或者安排维护窗口重启相关服务;重启可能影响正在处理的请求。

df与du结果不同也可能与统计范围、读取权限或文件系统自身的空间管理有关,不能仅凭一次差异就认定文件丢失。

完成清理、日志轮转或相关服务维护后,再检查异常目录所在的文件系统:

df -hT /var
df -i /var

一次查看容量,一次查看inode。如果空间短时间内又被占满,继续定位增长最快的目录和对应进程,检查日志异常、备份保留策略或缓存积累。

如果是使用Hostinger VPS等云服务器,可以结合管理面板查看资源情况,再通过终端检查具体文件系统和目录。需要扩容时,也要确认分区及文件系统是否已经使用新增容量。

常见问题

df与du有什么区别?

df查看文件系统整体的空间使用和可用容量,du统计指定文件或目录的空间占用。排查时先用df确定位置,再用du寻找占用来源。

df -h /var能查看/var目录有多大吗?

不能。它显示的是/var所在文件系统的空间。查看目录自身的总量,可以使用:

sudo du -sh /var

如果只想统计同一文件系统范围,加上-x。

为什么文件已经删除,空间还没有释放?

文件仍被进程打开时,空间可能要等相关进程关闭文件后才释放。可以用lsof +L1查找,再按对应服务的维护方式处理。

查看磁盘空间需要root权限吗?

df通常可以由普通用户执行。扫描系统目录或查看其他进程打开的文件时,权限可能影响结果,因此上述排查命令在需要时使用了sudo。

磁盘使用率到多少需要处理?

不能只看一个固定百分比,还要看剩余容量、数据增长速度和业务写入量。数据库、日志和备份都需要留出空间,可以按业务增长情况设置告警并定期检查。

相关阅读:

《Linux查看磁盘空间的常用命令》

《如何清理Ubuntu的磁盘空间?Ubuntu释放磁盘空间方法介绍》

《优化WordPress主机磁盘空间的七点小建议》

(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)

主机侦探企业微信

微信扫码加好友进群

主机优惠码及时掌握

主机侦探QQ群

QQ群号:938255063

主机优惠发布与交流

温馨提示:

1、本站部分图片来源于互联网,如有侵权请联系删除。邮箱:2942802716#qq.com(#改为@)

2、本文评论没有专人回复,如果您有问题请到美国主机侦探论坛提问!

3、美国主机侦探免费为您提供美国主机购买咨询。

RakSmart美国服务器
下一篇
Linux系统中使用df和du命令检查磁盘空间
已经没有了
返回顶部