在Linux系统中,缓存文件是提升系统性能的关键,它们存储了频繁访问的数据,减少磁盘I/O操作,查看缓存文件有助于理解内存使用情况、排查性能问题或清理冗余数据,以下是Linux中查看不同类型缓存文件的详细方法。
系统级缓存查看(内核与内存缓存)
Linux内核将空闲内存用作缓存,主要包括Page Cache(文件缓存)、Buffer Cache(块设备缓存)和Slab Cache(内核对象缓存),可通过以下命令查看:
free
命令:快速查看内存与缓存占用
free -h
输出示例中,buff/cache
列即为系统缓存占用的内存(包含Buffer和Cache),available
列是可用的内存(已扣除缓存可回收部分)。
/proc/meminfo
:详细内存与缓存信息
cat /proc/meminfo | grep -E "(Cached|Buffers|Slab|PageTables)"
关键字段说明:
Cached
:Page Cache,用于缓存文件数据;Buffers
:块设备缓存,如磁盘块读写缓冲;Slab
:内核数据结构缓存(如inode、dentry);PageTables
:内存页表缓存。
vmstat
:监控内存与缓存动态
vmstat -s
输出中“cache memory”即Page Cache大小,“buffer memory”即Buffer大小。
slabtop
:查看Slab Cache详情
slabtop -o
按-o
按内存使用排序,显示内核对象(如inode、dentry)的缓存占用。
系统缓存命令对比表
命令 | 作用 | 关键输出字段 |
---|---|---|
free -h |
快速查看内存与缓存总量 | buff/cache 、available |
/proc/meminfo |
详细内存与缓存参数 | Cached 、Buffers 、Slab |
vmstat -s |
内存使用统计(含缓存动态) | cache memory 、buffer memory |
slabtop |
内核对象缓存详情 OBJS(ROW) 、OBJ SIZE(KB) |
应用级缓存查看
包管理器缓存(APT/YUM/DNF)
- APT(Debian/Ubuntu):缓存路径
/var/cache/apt/archives/
,查看占用:du -sh /var/cache/apt/archives/
- YUM/DNF(CentOS/RHEL):缓存路径
/var/cache/yum/
或/var/cache/dnf/
,查看大小:du -sh /var/cache/{yum,dnf}/*/
浏览器缓存
- Chrome/Chromium:缓存路径
~/.cache/google-chrome/Default/Cache/
,查看:du -sh ~/.cache/google-chrome/Default/Cache/
- Firefox:缓存路径
~/.cache/mozilla/firefox/
,按进程名查找:find ~/.cache/mozilla/firefox/ -name "*.cache" -exec du -sh {} ;
容器与虚拟机缓存
- Docker:镜像/容器缓存路径
/var/lib/docker/
,查看镜像缓存:du -sh /var/lib/docker/image/overlay2/imagedb/content/sha256/
- 虚拟机(KVM/QEMU):磁盘缓存路径
/var/lib/libvirt/images/
,查看:du -sh /var/lib/libvirt/images/*.qcow2
通用用户缓存
多数应用遵循XDG规范,缓存存放在~/.cache/
,
du -sh ~/.cache/* | sort -hr | head -n 10 # 按大小排序显示Top10缓存目录
通用缓存查找技巧
若需查找特定类型的缓存文件,可结合find
命令按扩展名或大小筛选:
- 查找大于100MB的缓存文件:
find /path/to/cache -type f -size +100M
- 查找
.cache
扩展名的文件:find / -name "*.cache" 2>/dev/null
- 使用
ncdu
(交互式磁盘使用分析工具)可视化缓存目录:ncdu /var/cache # 需安装ncdu(apt install ncdu/yum install ncdu)
相关问答FAQs
Q1: 如何清理Linux系统缓存以释放内存?
A1: 可通过以下命令清理(注意:echo 3 > /proc/sys/vm/drop_caches
需root权限,且会临时降低性能):
- 清理Page Cache(文件缓存):
sync && echo 1 > /proc/sys/vm/drop_caches
- 清理Buffer Cache(块设备缓存):
sync && echo 2 > /proc/sys/vm/drop_caches
- 清理所有缓存(慎用):
sync && echo 3 > /proc/sys/vm/drop_caches
应用缓存(如浏览器、Docker)需手动删除对应目录(如rm -rf ~/.cache/firefox/
)。
Q2: 为什么Linux系统内存占用很高,但实际可用内存却很少?
A2: Linux内核会将空闲内存用作Page Cache和Buffer Cache,以提升后续读写性能(从缓存读取远快于磁盘),此时内存并非“占用”,而是“预缓存”,可通过free -h
中的available
列查看真正可用的内存(包含可回收的缓存),若available
值较低,才需排查是否有进程异常占用内存。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/24489.html