服务器测评网
我们一直在努力

Linux如何查询磁盘空间大小和各目录占用情况?

在Linux系统中,磁盘空间管理是日常运维和开发工作中不可或缺的一环,无论是服务器还是个人电脑,及时掌握磁盘空间的使用情况,能够有效避免因空间不足导致的服务中断或系统卡顿问题,本文将详细介绍Linux系统中查询空间大小的常用方法、实用工具及进阶技巧,帮助用户高效管理磁盘资源。

Linux如何查询磁盘空间大小和各目录占用情况?

命令行工具:高效查询磁盘空间的利器

Linux命令行提供了丰富且强大的工具,用于查询磁盘空间使用情况,其中最常用的包括dfdulsblk等,这些工具灵活高效,适合服务器管理或自动化脚本场景。

df命令:查看文件系统整体使用情况

df(disk free)命令用于显示Linux文件系统的磁盘空间使用情况,默认以KB为单位输出,通过不同参数,可以获取更详细的信息:

  • df -h:以人类可读格式显示(如GB、MB、KB),这是最常用的参数组合。
    Filesystem      Size  Used Avail Use% Mounted on  
    /dev/sda1       50G   20G   28G  42% /  
    /dev/sdb1      100G   30G   65G  32% /data  

    输出中包括文件系统设备名、总大小、已用空间、可用空间、使用率及挂载点,快速判断哪个分区空间紧张。

  • df -T:显示文件系统类型(如ext4、xfs、ntfs等),便于区分不同分区的格式:
    Filesystem Type  Size  Used Avail Use% Mounted on  
    /dev/sda1 ext4   50G   20G   28G  42% /  
  • df -i:查看inode使用情况,inode是Linux中存储文件元数据的结构,当inode耗尽时,即使磁盘空间充足也无法创建新文件。
    Filesystem     Inodes   IUsed   IFree IUse% Mounted on  
    /dev/sda1      3.2M    1.1M    2.1M   34% /  

du命令:统计目录或文件占用空间

du(disk usage)命令用于递归查询指定目录或文件的磁盘占用空间,适合定位具体的大文件或目录。

  • du -sh:查看当前目录总大小(-s表示汇总,-h表示人类可读格式):
    2G    ./documents  
  • *`du -sh `**:并列显示当前目录下各子目录的大小,快速定位占用空间最多的目录:
    500M    ./downloads  
    300M    ./pictures  
    100M    ./videos  
  • du -ah --max-depth=1:显示当前目录及一级子目录下所有文件和目录的大小(-a包含文件,--max-depth=1限制递归深度):
    10K     ./notes.txt  
    500M    ./downloads  
    300M    ./pictures  
  • *`du –exclude=.log**:排除特定类型的文件(如日志文件),统计时忽略.log`文件:
    800M    ./logs  # 若包含大量.log文件,此命令可快速排除干扰  

lsblk命令:查看块设备信息

lsblk(list block devices)以树状结构显示磁盘分区信息,包括设备名、大小、挂载点等,适合了解物理磁盘与分区的对应关系:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT  
sda      8:0    0  100G  0 disk  
├─sda1   8:1    0   50G  0 part /  
└─sda2   8:2    0   50G  0 part /data  
sdb      8:16   0  200G  0 disk  
└─sdb1   8:17   0  200G  0 part /backup  

输出中RM表示是否为可移动设备(1是,0否),SIZE为设备大小,MOUNTPOINT为挂载点。

图形化界面:适合新用户的可视化工具

对于不熟悉命令行的用户,Linux发行版通常提供图形化工具,通过直观的界面展示磁盘空间使用情况。

GNOME磁盘使用分析器(Disk Usage Analyzer)

GNOME桌面环境自带的“磁盘使用分析器”(Baobob),支持扫描指定目录并以环形图、树状图展示空间占用,打开后选择目标目录,即可查看各子目录的占比,点击具体区块可快速定位大文件。

Linux如何查询磁盘空间大小和各目录占用情况?

KDE的KDiskFree

KDE桌面环境中的KDiskFree,以列表形式显示所有挂载点的磁盘空间、类型及使用率,同时提供“打开”“卸载”等快捷操作,适合快速查看分区状态。

系统设置中的存储选项

现代Linux发行版(如Ubuntu、Fedora)的系统设置中,通常包含“存储”或“磁盘”模块,可视化显示根目录、用户目录等分区的空间使用情况,甚至支持一键清理临时文件或归档旧数据。

文件系统分析与空间占用大户定位

当发现磁盘空间不足时,快速定位占用空间的大文件或目录是关键,结合findsort等命令,可以高效完成分析。

查找大于指定大小的文件

使用find命令结合-size参数,可查找满足特定大小条件的文件。

  • 查找/var/log目录下大于100MB的文件:
    find /var/log -type f -size +100M  
  • 查找当前目录下大于1GB的文件并按大小排序:
    find . -type f -size +1G -exec ls -lh {} \; | sort -k5 -hr  

    -exec ls -lh {} \;对每个匹配文件执行ls -lhsort -k5 -hr按第5列(文件大小)反向排序(从大到小)。

查找重复文件

重复文件会浪费大量空间,使用fdupes工具可快速查找重复文件:

sudo apt install fdupes  # Debian/Ubuntu系统安装  
fdupes -r /path/to/directory  # 递归查找目录中的重复文件  

输出重复文件列表后,可手动删除冗余副本。

分析日志文件占用

系统日志文件(如/var/log/syslog/var/log/auth.log)可能因长期积累占用大量空间,使用logrotate工具可自动管理日志文件:

Linux如何查询磁盘空间大小和各目录占用情况?

sudo cat /etc/logrotate.conf  # 查看日志轮转配置  

通过配置日志轮转策略(如按大小或时间分割),可避免单个日志文件过大。

高级技巧:实时监控与空间预警

对于服务器环境,实时监控磁盘空间并设置预警机制,可有效预防空间不足导致的服务故障。

使用inotifywait监控目录变化

安装inotify-tools后,可监控指定目录的文件创建、删除等事件,实时追踪空间变化:

sudo apt install inotify-tools  
inotifywait -m -r -e create,delete /data  # 持续监控/data目录的创建和删除事件  

设置磁盘空间告警脚本

结合dfmail命令,可编写简单的告警脚本,当磁盘使用率超过80%时发送邮件:

#!/bin/bash  
THRESHOLD=80  
df -h | awk '{print $5, $6}' | grep -v Use | while read output; do  
  use=$(echo $output | awk '{print $5}' | sed 's/%//')  
  partition=$(echo $output | awk '{print $6}')  
  if [ $use -gt $THRESHOLD ]; then  
    echo "警告:分区 $partition 使用率已达 ${use}%" | mail -s "磁盘空间告警" admin@example.com  
  fi  
done  

将脚本加入crontab,定期执行即可实现自动告警。

查看文件系统使用历史

安装sysstat包后,使用sar命令可查看磁盘空间的历史使用情况:

sudo apt install sysstat  
sar -d -p 1 10  # 每秒输出一次磁盘I/O信息,共10次  

Linux系统提供了多样化的工具和方法查询磁盘空间,从基础的dfdu命令,到图形化界面工具,再到高级的监控脚本,用户可根据需求选择合适的方式,在日常使用中,建议定期检查磁盘空间,及时清理无用文件、归档旧数据,并结合自动化工具实现空间预警,确保系统稳定运行,掌握这些技巧,不仅能提升运维效率,还能有效避免因空间不足引发的各种问题。

赞(0)
未经允许不得转载:好主机测评网 » Linux如何查询磁盘空间大小和各目录占用情况?