一、为什么需要关注磁盘空间

咱们用电脑的时候,经常会遇到系统提示“磁盘空间不足”,这时候如果不及时处理,可能会导致程序崩溃、数据丢失,甚至系统卡死。Linux服务器尤其需要注意这个问题,因为很多服务(比如数据库、Web服务)都需要足够的磁盘空间才能正常运行。

在Linux中,最常用的两个命令来查看和管理磁盘空间的就是dfdu。它们就像你的“磁盘空间体检报告”,能告诉你哪些地方占用了空间,哪些文件可以清理。


二、df命令:查看磁盘整体使用情况

df(Disk Filesystem)命令用来查看整个文件系统的磁盘使用情况,包括总容量、已用空间、剩余空间等。

基本用法

# 查看所有挂载的文件系统使用情况(默认以KB为单位)
df

# 以更易读的方式显示(自动转换单位:KB/MB/GB)
df -h

# 只显示某个特定文件系统的信息(比如根目录 `/`)
df -h /

示例解析

# 示例输出:
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   30G   18G  63% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
  • Filesystem:磁盘分区名称(如/dev/sda1)。
  • Size:总容量(50GB)。
  • Used:已用空间(30GB)。
  • Avail:剩余可用空间(18GB)。
  • Use%:使用百分比(63%)。
  • Mounted on:挂载点(/表示根目录)。

适用场景

  • 快速检查服务器磁盘是否快满了。
  • 排查哪个分区空间紧张(比如/var日志目录占满)。

三、du命令:查看目录/文件占用空间

du(Disk Usage)命令用来查看具体目录或文件占用了多少磁盘空间,比df更细致。

基本用法

# 查看当前目录的总占用空间(默认KB)
du

# 以易读方式显示(-h),并汇总总大小(-s)
du -sh

# 查看指定目录的大小(比如/var/log)
du -sh /var/log

# 查看目录下所有子目录的大小(按大小排序)
du -h --max-depth=1 / | sort -h

示例解析

# 示例1:查看当前目录占用空间
du -sh
# 输出:4.5G .

# 示例2:查看/var/log下所有日志文件大小
du -h /var/log/*
# 输出:
# 100M /var/log/syslog
# 2G   /var/log/nginx
# ...

适用场景

  • 找出哪个目录或文件占用了大量空间(比如日志文件、缓存文件)。
  • 清理无用的大文件前,先确认它们的大小。

四、清理冗余文件的实战技巧

知道哪些文件占空间后,就可以动手清理了。以下是常见场景和解决方案:

1. 清理日志文件

日志文件(如/var/log)经常是“磁盘杀手”,可以用logrotate管理或手动清理:

# 查看并删除旧的日志文件(比如超过100MB的)
find /var/log -type f -size +100M -exec ls -lh {} \;
find /var/log -type f -size +100M -delete

# 或者清空某个日志文件(比如nginx的access.log)
echo "" > /var/log/nginx/access.log

2. 清理缓存和临时文件

Linux的缓存和临时文件通常位于/tmp/var/cache

# 清理旧的临时文件(超过30天未修改的)
find /tmp -type f -mtime +30 -delete

# 清理包管理器的缓存(比如apt)
sudo apt clean

3. 查找并删除大文件

find命令搜索大文件(比如超过1GB的):

# 从根目录开始查找大于1GB的文件
find / -type f -size +1G -exec ls -lh {} \;

# 确认无误后删除
find / -type f -size +1G -delete

注意事项

  • 谨慎使用rm -rf:删除前务必确认文件是否重要。
  • 保留关键日志:比如数据库日志、审计日志别乱删。
  • 定期检查:可以设置cron任务每周自动清理。

五、总结

  1. df:宏观查看磁盘使用情况,适合快速定位问题分区。
  2. du:微观分析目录/文件大小,精准找到“空间杀手”。
  3. 清理技巧:日志、缓存、临时文件是常见清理目标,但操作前务必确认。

养成定期检查磁盘空间的习惯,能避免很多突发问题。如果服务器经常爆满,可以考虑扩容或优化存储策略(比如日志归档)。