linux 文件缓冲区,如何查看 Linux 当前缓存了哪些大文件?
Linux 用户可能经常遇到的一个问题是,机器有 16GB 内存之多,运行的进程也不多,但是剩下的 free 内存并不多,大部分都被 buff 和 cache 占用了(比如下面我的 PC)。
$ free -h
total used free shared buff/cache available
Mem: 15G 6.4G 2.3G 1.1G 6.9G 7.7G
Swap: 975M 268K 975M
虽然对于 Linux 的内存分配机制来说,这种被 buff 和 cache 占用的内存在系统需要时会及时释放出来,但是有时候我们想知道到底 cache 了些什么却没有一个好的办法。
前几天看到有个人用 go 写了个 pcstat,可以查看某个文件是否被缓存(作者的目的是数据库调优),也可以根据进程的 PID 来查看都缓存了哪些文件,不过该工具不能查看整个操作系统都 cache 了哪些文件。
因此,我基于 pcstat 写了个hcache,增加了查看当前操作系统所 cache 的前若干个文件的特性。如果有什么建议的话也欢迎反馈给我:hubottle@gmail.com 。
使用方法比较简单:
$ sudo hcache --top 10
[sudo] password for silenceshell:
+----------------------------------------------------------------------------------+----------------+------------+-----------+---------+
| Name | Size (bytes) | Pages | Cached | Percent |
|----------------------------------------------------------------------------------+----------------+------------+-----------+---------|
| /opt/google/chrome/chrome | 114911208 | 28055 | 25457 | 090.740 |
| /usr/share/code/code | 67688720 | 16526 | 12274 | 074.271 |
| /home/silenceshell/Software/pycharm-community-2016.2/lib/pycharm.jar | 95177431 | 23237 | 11325 | 048.737 |
| /opt/atom/atom | 62641344 | 15294 | 10578 | 069.164 |
| /usr/bin/dockerd | 39121168 | 9552 | 7103 | 074.361 |
| /home/silenceshell/Software/pycharm-community-2016.2/jre/jre/lib/amd64/libjfxwebkit.so | 57455824 | 14028 | 6625 | 047.227 |
| /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4.10.2 | 36462184 | 8902 | 6316 | 070.950 |
| /usr/lib/beyondcompare/BCompare | 30640160 | 7481 | 5505 | 073.586 |
| /usr/bin/SecureCRT | 29524560 | 7209 | 4806 | 066.667 |
| /usr/share/code/libnode.so | 21135976 | 5161 | 4588 | 088.898 |
+---------------------------------------------------------------------
让我们来查看一下其中列出的一个文件:
$ lsof /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4.10.2
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
quiterss 20630 silenceshell mem REG 8,5 36462184 3936610 /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4.10.2
默认情况下会显示 cache 的文件的全路径,会比较长,也可以使用--bname选项来仅显示文件名:
-------------+----------------+------------+-----------+---------+
$ sudo ./hcache --top 3 --bname
+-------------+----------------+------------+-----------+---------+
| Name | Size (bytes) | Pages | Cached | Percent |
|-------------+----------------+------------+-----------+---------|
| chrome | 114911208 | 28055 | 25476 | 090.807 |
| pycharm.jar | 95177431 | 23237 | 11479 | 049.400 |
| atom | 62641344 | 15294 | 10578 | 069.164 |
+-------------+----------------+------------+-----------+---------+
这个小工具的源码开源在 Github上:hcache,欢迎关注和提交 issue 及 PR。
linux 文件缓冲区,如何查看 Linux 当前缓存了哪些大文件?相关推荐
- 在win10查看本机linux的文件,Windows 10变身开发者利器:内置Linux内核,轻松查看Linux子系统文件...
原标题:Windows 10变身开发者利器:内置Linux内核,轻松查看Linux子系统文件 来源:创事记 终于!在Windows里可以访问Linux文件了. 这表明,微软插入开源界的触角,越来越深入 ...
- 【Linux 内核 内存管理】Linux 内核内存布局 ① ( 查看 Linux 操作系统位数 | 查看 Linux 操作系统软硬件信息 )
文章目录 一.查看 Linux 操作系统位数 二.查看 Linux 操作系统软硬件信息 一.查看 Linux 操作系统位数 在 646464 位的 Linux 中 , 使用 484848 位 表示 & ...
- linux家用系统版本,查看linux系统版本
篇一:linux下如何查看系统和内核版本 linux下如何查看系统和内核版本 1. 查看内核版本命令: 1) [root@q1test01 ~]# cat /proc/version Linux ve ...
- 【Linux开发】如何查看Linux kernel的内置模块驱动列表和进程ID
[Linux开发]如何查看Linux kernel的内置模块驱动列表和进程ID 标签:[Linux开发] 命令: cat /lib/modules/$(uname -r)/modules.builti ...
- node 生产的env文件怎么注入_前端各种文件上传攻略,从小图片到大文件断点续传...
写在前面 今年国庆假期终于可以憋在家里了不用出门了,不用出去看后脑了,真的是一种享受.这么好的光阴怎么浪费,睡觉.吃饭.打豆豆这怎么可能(耍多了也烦),完全不符合我们程序员的作风,赶紧起来把文章写完. ...
- 写给新手前端的各种文件上传攻略,从小图片到大文件断点续传
写在前面 今年国庆假期终于可以憋在家里了不用出门了,不用出去看后脑了,真的是一种享受.这么好的光阴怎么浪费,睡觉.吃饭.打豆豆这怎么可能(耍多了也烦),完全不符合我们程序员的作风,赶紧起来把文章写完. ...
- 前端各种文件上传攻略,从小图片到大文件断点续传
写在前面 今年国庆假期终于可以憋在家里了不用出门了,不用出去看后脑了,真的是一种享受.这么好的光阴怎么浪费,睡觉.吃饭.打豆豆这怎么可能(耍多了也烦),完全不符合我们程序员的作风,赶紧起来把文章写完. ...
- 两台电脑用蓝牙传文件出现“系统资源不足,电脑之间互相传递单个大文件,例如单个文件50g,100g
两台电脑用蓝牙传文件出现"系统资源不足,电脑之间互相传递单个大文件,例如单个文件50g,100g 1.我的使用场景是这样的,有一个50g的文件要从一台电脑传输到另一台电脑上,想起了无线传输 ...
- linux查看文件的方法,查看linux文件的方法
查看linux文件的方法 发布时间:2020-05-06 10:54:14 来源:亿速云 阅读:171 作者:小新 今天小编给大家分享的是查看linux文件的方法,相信很多人都不太了解,为了让大家更加 ...
最新文章
- 瞄准自然语言处理,百度与鹏城实验室共建实验室
- 【Groovy】Groovy 方法调用 ( 使用闭包创建接口对象 | 接口中有一个函数 | 接口中有多个函数 )
- 276.	Paint Fence
- c++-内存管理-array allocator
- 被 Kafka 虐的日子,太惨了……
- 数据结构实验之二叉树的建立与遍历
- IDC服务器共享带宽和独享带宽的区别
- android关于截屏,关于android截屏知识的学习
- 【POJ2676】Sudoku(优化搜索顺序)
- 25muduo_net库源码分析(一)
- [Unity菜鸟] Character控制移动
- 为什么手工drop_caches之后cache值并未减少?
- donet学习笔记4(validate)
- boost电路公式详解
- 使用formData对象提交表单并上传图片
- 推荐一个Windows工具箱-云图工具箱
- Linux下更改服务器名称
- 狠!删库跑路!一行代码蒸发10亿人民币!
- zabbix监控-企业微信webhook告警并使用markdown格式
- 深度学习在静息态功能磁共振成像中的应用
热门文章
- R语言编写自定义描述统计计算函数、使用doBy包的summaryBy函数计算不同分组(group)的描述性统计值(Descriptive statistics by group、样本个数、均值、标准)
- R语言使用ggpubr包的ggarrange函数组合多张结论图:使用ggpubr包将表格嵌套在可视化图像中
- R语言单因素重复测量方差分析(one-way repeated measures ANOVA)实战
- Python可视化matplotlib自定义:运行时参数修改、自定义样式、默认样式+plt.style.use()
- 实验三:XML模型(二)
- wince5使用access数据库_关于wince系统支持什么数据库的阿里云论坛用户知识和技术交流...
- 信息熵与自然语言处理
- docker 查看容器磁盘大小_软件安全 : Docker逃逸详解
- threadlocal存连接对象的目的_面试官:知道ThreadLocal嘛?谈谈你对它的理解?
- html 移动端(手机)调试 vconsole