在Linux系统中,磁盘空间管理是系统运维的基础工作之一,及时查看可用空间不仅能避免因磁盘耗尽导致的系统故障,还能帮助优化存储分配,本文将详细介绍Linux查看可用空间的各类命令、工具及实用技巧,从基础到进阶,覆盖不同场景下的需求。

基础命令:df与du——空间查看的“左膀右臂”
在Linux中,df(disk free)和du(disk usage)是查看磁盘空间最核心的两个命令,前者侧重文件系统整体空间,后者聚焦目录或文件的具体占用。
df命令:文件系统空间概览
df命令用于显示文件系统的磁盘使用情况,默认以KB为单位输出,通过参数可以调整输出格式、过滤目标文件系统等,常用参数包括:
-h(human-readable):以人类可读格式显示(如K、M、G),便于直观理解;-T(print-type):显示文件系统类型(如ext4、xfs、tmpfs等);-i(inodes):显示inode使用情况,inode耗尽会导致“空间未满却无法创建文件”的问题;--output=字段:自定义输出字段,如--output=source,fstype,size,used,avail,pcent,适合脚本处理。
df -h会列出所有挂载文件系统的总大小、已用空间、可用空间、使用率及挂载点:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 28G 42% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sdb1 100G 15G 80G 16% /data
其中Avail列即为当前文件系统的可用空间,Use%超过90%时需警惕空间不足风险。
du命令:目录/文件空间占用分析
du命令用于统计指定目录或文件的磁盘占用,默认递归显示子目录,常用参数:
-h:人类可读格式;-s(summarize):仅汇总指定目录的总占用,不显示子目录细节;-a(all):显示所有文件(包括子目录中的文件),而非仅目录;--max-depth=N:限制递归层级,如--max-depth=1仅统计当前目录下一级子目录。
查看/home目录下各用户的占用情况:
du -sh /home/*
输出可能为:
2G /home/user1
2.5G /home/user2
500M /home/user3
结合df和du,可快速定位空间耗尽的具体目录:先用df发现/data分区使用率高,再用du -sh /data/*逐级排查大目录。
进阶技巧:参数组合与脚本化应用
df的精细化输出与监控
df的--output参数可实现定制化输出,例如仅查看/ext4文件系统的可用空间:
df -h --output=fstype,size,used,avail,pcent | grep ext4
在监控场景中,可通过awk提取关键信息,例如仅显示使用率超过80%的分区:
df -h | awk '$5 > 80 {print $6 " 使用率: " $5}'
若需实时监控空间变化,可结合watch命令每2秒刷新一次:

watch -n 2 "df -h | grep /data"
du的排除与排序技巧
当需要排除特定目录(如临时文件、缓存)时,--exclude参数非常实用,例如查看/var目录占用,但排除log子目录:
du -sh --exclude=log /var
若需按占用大小排序,可结合sort命令(默认按字符串排序,需用-h按数值排序):
du -sh /home/* | sort -hr
-r表示降序,输出结果会从大到小排列,快速定位占用最高的目录。
其他工具:lsblk、pydf与ncdu——多维度空间分析
lsblk:块设备与分区结构可视化
lsblk(list block devices)以树形结构显示块设备信息,包括磁盘分区、挂载点、大小等,适合查看物理磁盘与文件系统的对应关系。
lsblk -f
输出:
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 root a1b2c3d4-e5f6-7890-1234-567890abcdef /
sdb
└─sdb1 xfs data 9876fedc-ba98-7654-3210-fedcba987654 /data
其中FSTYPE列显示文件系统类型,MOUNTPOINT列显示挂载点,结合df可明确分区与挂载点的对应关系。
pydf:彩色化df输出
pydf是Python编写的df增强工具,默认以不同颜色区分使用率(绿色正常、黄色警告、红色危险),输出更直观,安装后直接运行:
pydf
ncdu:交互式磁盘使用分析器
ncdu(NCurses Disk Usage)是交互式工具,支持动态浏览、删除文件,并实时更新空间占用,安装后进入目标目录:
ncdu /data
界面会显示目录树及占用大小,可通过方向键导航,按d删除文件(需确认),按c查看文件详情,适合大容量分区的深度排查。
文件系统类型差异:ext4、XFS、Btrfs的特殊处理
不同文件系统的空间管理机制存在差异,查看可用空间时需注意:
ext4:传统文件系统的空间视图
ext4文件系统的可用空间受“保留块”影响(默认为5%,root用户可使用),查看实际可用空间时,需考虑保留块:

df -h / | awk 'NR==2 {print "可用空间: " $3 "/" $2 " (保留5%)"}'
可通过tune2fs -l /dev/sda1 | grep "Reserved block count"查看保留块数量。
XFS:在线扩容与空间管理
XFS文件系统支持在线扩容(xfs_growfs),可用空间需结合文件系统组(extent)查看,查看XFS分区的空间分配:
xfs_info /data
输出中的data和rt(实时)段显示已分配和未分配空间,若需查看实际可用空间,仍以df为准。
Btrfs:快照与压缩影响空间
Btrfs支持快照和压缩,可用空间需考虑快照占用和压缩比,查看Btrfs文件系统的详细空间分配:
btrfs filesystem df /data
输出包含Data、Metadata、System等占用,其中Used为实际数据占用,Free为可用空间,快照会占用Metadata空间。
常见问题与解决方案
问题1:df显示空间未释放,但du显示占用小
原因:文件被删除后,若仍有进程打开该文件,文件内容不会立即释放(进程关闭后才释放)。
排查:通过lsof | grep deleted查看被删除但仍在使用的文件,重启相关进程或杀死进程后释放空间。
问题2:可用空间为0,但df显示仍有空间
原因:inode耗尽,每个文件/目录需占用一个inode,若inode用完,即使磁盘空间未满也无法创建新文件。
排查:运行df -i查看inode使用率,若接近100%,需清理小文件或增加inode数量(需重新格式化文件系统)。
问题3:挂载点无法访问,df显示空间正常
原因:文件系统错误(如断电导致ext4超级块损坏)。
排查:使用fsck修复文件系统(需先卸载挂载点):
fsck /dev/sda1
Linux查看可用空间的核心逻辑是“先宏观后微观”:通过df掌握文件系统整体空间,用du定位具体目录/文件占用,结合lsblk、ncdu等工具深化分析,同时需注意文件系统类型差异(如ext4保留块、Btrfs快照)和inode等隐性资源问题,熟练掌握这些命令与技巧,不仅能快速解决空间不足故障,还能为系统存储规划提供数据支持,是Linux运维人员必备的基础技能。