linux缓存命令行
linux缓存命令行详细介绍
在 Linux 中,缓存(Cache)主要包括文件系统缓存(页缓存、目录项缓存等)和内存管理相关的缓存。以下是常用的缓存相关命令行操作:
一、
查看缓存使用情况
- 查看内存缓存(包括页缓存、目录项缓存)
使用free命令(显示内存使用统计,包括缓存):
bashbuff/cache:已用的缓冲区(Buffers)和缓存(Cache)总和。available:可用内存(包含可回收的缓存)。
更详细的信息可查看
/proc/meminfo:
bash/proc/meminfoPageCache:页缓存(文件数据缓存)。Slab:内核对象缓存(如目录项、索引节点等)。
- 查看磁盘 I/O 缓存统计
使用vmstat查看内存和缓存的实时统计:
bash- 关注
buffers(缓冲区)和cache(缓存)列。
- 关注
二、
清理缓存(需谨慎!)
注意:Linux 会自动管理缓存,手动清理可能影响性能,仅建议在调试或极端场景下使用,且需 root 权限。
- 同步数据到磁盘(避免数据丢失)
在清理缓存前,先将内存中的脏数据写入磁盘:
bash - 清理不同类型的缓存
通过向/proc/sys/vm/drop_caches写入值来释放缓存(需 root):
bash/proc/sys/vm/drop_caches/proc/sys/vm/drop_caches
/proc/sys/vm/drop_caches
执行顺序建议:先执行
echo 3或按 1→2→3 的顺序,确保分步释放。 - 释放 slab 缓存(可选)
如果需要同时释放内核对象缓存(如 Slab),需先禁用kmemcheck(部分系统),再触发释放:
bash/sys/kernel/mm/ksm/run/proc/sys/vm/drop_caches
/proc/sys/vm/drop_caches
/proc/sys/vm/drop_caches
三、
永久配置缓存参数(可选)
如需长期调整缓存行为,可修改 /etc/sysctl.conf(需重启生效):
bash
/etc/sysctl.conf
添加或修改以下参数:
conf
vm.drop_caches = 0 # 0 表示不自动清理(默认),1/2/3 同上文vm.vfs_cache_pressure = 100 # 控制内核回收目录项/索引节点缓存的倾向(值越大越积极,默认 100)
vm.swappiness = 60 # 控制内存交换到 Swap 的倾向(值越小越优先使用缓存,默认 60)
修改后生效:
bash
四、
注意事项
- 自动管理机制:Linux 会根据内存压力自动回收缓存,无需手动清理。
- 性能影响:清理缓存会导致后续文件访问重新从磁盘读取,可能降低 I/O 性能。
- 风险:错误操作可能导致系统不稳定,建议先备份数据。
总结
- 查看缓存:
free、vmstat、/proc/meminfo。 - 清理缓存:通过
sync和drop_caches(需 root,谨慎使用)。 - 优化配置:通过
sysctl调整内核参数(长期生效)。
根据具体需求选择合适的工具,避免盲目清理影响系统性能。