Linux用户可能经常会遇到一个问题,机器内存高达16GB,运行的进程不多,但是空闲内存不多左边,大部分被buff和cache占用了(如下图我的PC)。$free-htotalusedfreesharedbuff/cacheavailableMem:15G6.4G2.3G1.1G6.9G7.7GSwap:975M268K975M虽然对于Linux的内存分配机制来说,buff和cache占用的内存会在系统需要的时候及时释放,但是有有时候我们想知道缓存的是什么但是没有什么好办法。前几天看到有人用go写了一个pcstat。可以查看一个文件是否被缓存(笔者的目的是调数据库),也可以根据进程的PID查看缓存了哪些文件。但是,此工具无法查看在整个操作系统中缓存了哪些文件。因此,我写了一个基于pcstat的hcache,加入了查看当前操作系统缓存的前几个文件的功能。您可以从此处下载并试用。如果您有任何建议,欢迎反馈给我:hubottle@gmail.com。使用方法比较简单:$sudohcache--top10[sudo]passwordforsilenceshell:+------------------------------------------------------------------------------+---------------+------------+------------+--------+|名称|大小(字节)|页|缓存|百分比||----------------------------------------------------------------------------------+---------------+------------+------------+--------||/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|+----------------------------------------------------------------------我们来看看A文件的列表:$lsof/usr/lib/x86_64-linux-gnu/libQtWebKit.so.4.10.2COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEquiterss20630silenceshellmemREG8,5364621843936610/usr/lib/x86_64-linux-gnu.lib2defaultwillbeWebKit1.by显示缓存文件的完整路径,会比较长,也可以使用--bname选项只显示文件名:------------+-----------------+------------+------------+--------+$sudo./hcache--top3--bname+------------+----------------+------------+----------+--------+|名称|大小(字节)|页面|缓存|百分比||------------+---------------+------------+------------+--------||铬|114911208|28055|25476|090.807||pycharm.jar|95177431|23237|11479|049.400||atom|62641344|15294|10578|069.164|+--------------+---------------+------------+------------+--------+本小工具源码开源在Github:hcache,欢迎关注并提交issue和PR
