速览体育网

Good Luck To You!

Linux如何查看各目录可用空间?常用命令详解教程

在Linux系统中,磁盘空间管理是系统运维的基础工作之一,及时查看可用空间不仅能避免因磁盘耗尽导致的系统故障,还能帮助优化存储分配,本文将详细介绍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  

结合dfdu,可快速定位空间耗尽的具体目录:先用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秒刷新一次:

Linux如何查看各目录可用空间?常用命令详解教程

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用户可使用),查看实际可用空间时,需考虑保留块:

Linux如何查看各目录可用空间?常用命令详解教程

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  

输出中的datart(实时)段显示已分配和未分配空间,若需查看实际可用空间,仍以df为准。

Btrfs:快照与压缩影响空间

Btrfs支持快照和压缩,可用空间需考虑快照占用和压缩比,查看Btrfs文件系统的详细空间分配:

btrfs filesystem df /data  

输出包含DataMetadataSystem等占用,其中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定位具体目录/文件占用,结合lsblkncdu等工具深化分析,同时需注意文件系统类型差异(如ext4保留块、Btrfs快照)和inode等隐性资源问题,熟练掌握这些命令与技巧,不仅能快速解决空间不足故障,还能为系统存储规划提供数据支持,是Linux运维人员必备的基础技能。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2026年2月    »
1
2345678
9101112131415
16171819202122
232425262728
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.4

Copyright Your WebSite.Some Rights Reserved.