Linux 系统如何查看磁盘空间和内存使用情况


嘿,朋友!无论你是经验丰富的 Linux 系统管理员,还是刚刚入门的新手,有效管理服务器或个人电脑的资源都至关重要。其中,磁盘空间和内存是两大核心资源,它们的健康状况直接影响着系统的稳定性和性能。

当你的应用程序开始变慢,或者在尝试保存文件时突然收到“空间不足”的警告时,别慌!今天,我就带你用几个超级实用的命令来轻松诊断你的 Linux 系统,让你对磁盘和内存的使用情况了如指掌。

一、磁盘空间:我的硬盘去哪儿了?

磁盘空间不足是我们在使用 Linux 时最常遇到的问题之一。下面这两个命令是你的得力助手,一个帮你从全局看,一个带你深入细节。

1. df 命令:快速概览磁盘全局使用情况

df(Disk Free)命令可以让你快速查看系统中所有文件系统的磁盘使用情况。 它就像一个仪表盘,告诉你每个磁盘分区的“胖瘦”。

最常用的姿势是加上 -h 参数,它会以我们人类更容易阅读的单位(如 G、M、K)来显示大小。

案例:查看服务器磁盘整体情况

df -h

执行后,你可能会看到类似下面的输出:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   25G   13G  66% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/vdb1       200G   5.2G  195G   3% /data

解析一下:

  • Filesystem: 表示该文件系统对应的设备文件路径,简单理解就是你的硬盘分区。
  • Size: 该分区的总大小。
  • Used: 已经使用了多少空间。
  • Avail: 还剩下多少可用空间。
  • Use%: 已用空间的百分比。这个很重要,当它飙到 85% 以上时,你就得注意了!
  • Mounted on: 文件系统的挂载点,也就是这个分区在哪个目录下访问。

一个小提示:有时候你会发现 UsedAvail 加起来不等于 Size,这是因为 Linux 文件系统默认会为 root 用户预留一部分空间,以备不时之需。

进阶玩法:inode 耗尽问题

偶尔会遇到一种奇怪的情况:df -h 显示还有空间,但创建新文件时却提示“no space left on device”。这通常是由于 inode(索引节点)用完了。系统中的每个文件都需要一个 inode。如果你的服务器上瞬间产生了大量的小文件,就可能耗尽 inode。

df -i 来查看 inode 的使用情况:

df -i

如果看到某一行的 IUse% 达到了 100%,那么问题就找到了。

2. du 命令:揪出占用空间的大文件/目录

du(Disk Usage)命令则是深入到目录内部,统计文件和子目录占用的磁盘空间。 当 df 告诉你某个分区快满了,du 就能帮你找到“罪魁祸首”。

案例:查找哪个目录最占空间

假设 df 命令显示 / 根目录使用率过高,我们想看看 /var 目录下到底是什么占用了大量空间。

最常用的组合是 du -sh <目录>

  • -s (summarize): 只显示总计大小。
  • -h (human-readable): 以易读的方式显示大小。
du -sh /var/*

这个命令会列出 /var 目录下每个文件和子目录的大小,让你一目了然。

4.0K	/var/account
12K	/var/adm
3.4G	/var/log
...

从上面的输出可以很明显地看到 /var/log 目录占用了 3.4G 空间,接下来你就可以进入这个目录,用同样的方法继续排查,看看是不是日志文件太大了。

组合拳:查找当前目录下最大的 10 个文件/目录

这是一个非常实用的组合命令,可以帮你快速定位大文件:

du -h --max-depth=1 | sort -rh | head -n 10
  • du -h --max-depth=1: 计算当前目录下第一层级的文件和目录大小。
  • sort -rh: -r 表示逆序(从大到小),-h 表示按人类可读的数字排序。
  • head -n 10: 只显示前 10 行结果。

二、内存使用:我的系统还扛得住吗?

内存是影响系统性能的另一个关键因素。内存不足会导致系统频繁使用交换空间(Swap),从而大大降低响应速度。

1. free 命令:最直接的内存快照

free 命令可以快速展示系统物理内存和交换空间的使用情况。 同样,建议使用 -h 参数。

案例:快速查看内存余量

free -h

输出结果如下:

              total        used        free      shared  buff/cache   available
Mem:          3.7Gi       1.2Gi       145Mi       1.0Mi       2.4Gi       2.2Gi
Swap:         2.0Gi       512Mi       1.5Gi

解析一下:

  • total: 总物理内存。
  • used: 已使用的内存。
  • free: 完全空闲的内存。
  • shared: 被多个进程共享的内存。
  • buff/cache: 被用作内核缓冲区和页面缓存的内存。
  • available: 这才是你最应该关注的! 它表示应用程序还可以使用的内存大小。它包括了 free 的内存和大部分可被系统回收的 buff/cache 内存。

重要观念:在 Linux 中,free 很小不一定代表内存不足!Linux 内核会尽可能地利用空闲内存来做缓存(cache),以提升文件读写性能。当应用程序需要内存时,系统会很快地回收这部分缓存给程序使用。所以,available 的值才更能真实地反映系统可用的内存。

2. top / htop 命令:实时监控内存动态

free 命令是静态的,而 top 命令则可以实时动态地展示系统中各个进程的资源占用情况,包括 CPU 和内存。

案例:找出最耗内存的进程

直接在终端输入 top

top

top 的交互界面中,你可以:

  • M (大写),让进程按内存使用率(%MEM)降序排列。
  • q 退出。

top 的输出信息非常丰富,上半部分是系统总体的 CPU 和内存统计,下半部分是进程列表。

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
1234 mysql     20   0   2.5g   1.2g  12348 S   0.3  32.1   12:34.56 mysqld
5678 www-data  20   0   512m   256m   5120 S   0.0   6.8    0:12.34 apache2
...
  • PID: 进程 ID。
  • USER: 进程所有者。
  • %MEM: 该进程占用的物理内存百分比。
  • RES: 进程使用的物理内存大小(常驻内存)。
  • COMMAND: 进程名。

如果你觉得 top 的界面有点“复古”,可以试试 htop。它是一个彩色的、交互更友好的 top 替代品,功能更强大,操作也更直观。大部分系统可能需要手动安装一下(例如 sudo apt install htopsudo yum install htop)。

3. /proc/meminfo 文件:最详细的内存信息

如果你想深入挖掘内存的每一个细节,可以直接查看 /proc/meminfo 文件。实际上,freetop 等命令的数据来源就是这个文件。

cat /proc/meminfo

这个命令会输出非常详细的内存信息,比如 MemTotal, MemFree, MemAvailable, Buffers, Cached 等等,适合需要深入分析内存问题的场景。

总结

好了,现在你已经掌握了在 Linux 系统中查看磁盘空间和内存使用情况的核心技能了!我们来简单回顾一下:

  • 查磁盘全局:用 df -h,关注 Use% 百分比。
  • 查目录/文件大小:用 du -sh,快速定位大文件。
  • 快速看内存:用 free -h,重点看 available
  • 实时抓内存大户:用 tophtop,按内存排序。

把这几个命令记在你的小本本上,下次再遇到系统资源问题,你就可以从容应对,轻松排查啦!


  目录