在AIX操作系统中,du(disk usage)命令是用于估算文件和目录所占磁盘空间的重要工具,它通过递归遍历指定路径下的文件系统,计算每个文件或目录的实际数据块占用情况,帮助用户快速定位磁盘空间的使用分布,与df命令关注文件系统整体使用情况不同,du命令更侧重于微观层面的空间分析,尤其在排查大文件、清理冗余数据等场景中不可或缺,以下将从命令语法、常用选项、实际应用场景及注意事项等方面详细介绍AIX中的du命令使用方法。

du命令基本语法与核心选项
du命令的基本语法结构为:du [选项] [文件或目录]
,若未指定文件或目录,默认从当前目录开始统计,其核心选项及功能如下表所示:
选项 | 功能说明 | 示例 |
---|---|---|
-a |
显示所有文件的大小,而仅目录 | du -a /home |
-h |
以人类可读格式显示(KB、MB、GB) | du -h /var/log |
-k |
以KB为单位显示大小(默认) | du -k /tmp |
-m |
以MB为单位显示大小 | du -m /opt |
-g |
以GB为单位显示大小 | du -g /data |
-s |
仅显示总计大小,不显示子目录详情 | du -s /usr |
-x |
跳过不同文件系统的目录 | du -x /mnt |
--max-depth=N |
限制递归深度为N层 | du --max-depth=2 / |
--exclude=PATTERN |
排除匹配模式的文件或目录 | du --exclude="*.log" /var |
常用场景实践示例
-
查看当前目录下各子目录空间占用
执行du -h --max-depth=1
命令,将显示当前目录第一层子目录的大小,格式如2G ./backup
,便于快速定位占用空间较大的目录。 -
统计特定目录的总空间并排除临时文件
若需清理/data
目录但需排除tmp
子目录,可使用:du -h --exclude=tmp /data
,该命令会计算/data
下所有子目录(除tmp
外)的空间占用。 -
查找系统中超过100MB的大文件
结合find命令可实现:find / -type f -size +100M -exec du -h {} \;
,该命令会遍历整个系统,输出所有大于100MB的文件及其大小。(图片来源网络,侵删) -
按用户统计目录空间占用
若需分析/home
目录下各用户的空间使用情况,可结合sort命令排序:du -sh /home/* | sort -hr
,其中-hr
选项表示按人类可读格式反向排序,直观显示占用最多的用户。
高级技巧与注意事项
-
处理符号链接
默认情况下,du命令会跟随符号链接统计实际文件大小,若需避免统计链接指向的文件,可添加-l
选项(AIX特有),例如du -l /path/to/link
。 -
排除特定文件系统类型
在AIX中,可通过-t
选项指定文件系统类型进行排除,例如跳过NFS文件系统:du -t nfs /mnt
,该命令仅统计非NFS类型的文件系统空间。 -
性能优化
对于大型文件系统(如数十TB的存储),递归统计可能耗时较长,可通过以下方式优化:(图片来源网络,侵删)- 使用
--max-depth
限制递归层级; - 结合
xargs
并行处理:find / -type d -print0 | xargs -0 -P 4 -I {} du -s {} | sort -nr
,其中-P 4
表示启用4个并行进程。
- 使用
-
与nmon工具结合分析
AIX官方监控工具nmon可实时展示磁盘I/O和空间使用情况,通过nmon -f
命令生成报告后,结合du命令的统计结果,可快速定位高I/O目录与空间占用异常的关联性。
常见错误与解决方案
-
权限不足导致统计不全
若du命令提示Permission denied
,可能是因普通用户无权访问某些系统目录(如/root
),解决方案包括:- 使用
sudo du -h /root
(需管理员权限); - 在
/etc/profile
中设置ulimit -n unlimited
提升文件描述符限制。
- 使用
-
统计结果与df命令差异过大
du统计的是实际数据块占用,而df包含文件系统元数据(如inode表)和保留空间,若差异显著,可能原因包括:- 存在大量小文件导致inode占用过高;
- 文件系统存在坏块,可通过
fsck -y /dev/lvname
修复。
相关问答FAQs
Q1: 为什么du命令统计的目录大小与df命令显示的文件系统使用量不一致?
A: du和df的统计角度不同:du仅计算文件数据占用的空间,而df包含文件系统元数据(如inode、超级块)和保留空间(通常为文件系统总空间的5%-10%),若存在被删除但未关闭的文件(如进程仍在写入),df会继续计入该文件占用,而du可能无法统计,导致差异,可通过lsof | grep deleted
检查此类文件。
Q2: 如何在AIX中使用du命令快速定位占用空间最大的10个文件?
A: 可通过组合find、du和sort命令实现:find / -type f -print0 | xargs -0 du -h | sort -hr | head -n 10
,命令解析:find / -type f
查找所有文件,xargs -0 du -h
统计文件大小并转换为人类可读格式,sort -hr
按数值反向排序,head -n 10
输出前10条结果,若需排除特定目录(如/proc
),可在find命令中添加-not -path '/proc/*'
选项。