free命令解惑及IC搬砖常用命令组合的使用方法

电子说

1.2w人已加入

描述

free命令

日常工作中,我们常使用"free -m"查看内存使用情况。其详细使用方法如下:

free [选项]

常用选项包括:

-b, --bytes 以字节为单位显示内存大小
-k, --kilo 以千字节为单位显示内存大小
-m, --mega 以兆字节为单位显示内存大小
-g, --giga 以吉字节为单位显示内存大小
-h, --human 以人性化的方式显示内存大小
-s N, --seconds N 设置数据刷新时间间隔为N秒
-c N, --count N 连续显示N次内存信息

举几个例子:

以兆字节为单位显示内存使用情况:

 

free -m
              total        used        free      shared  buff/cache   available
Mem:           3729         897        1714         180        1117        2402
Swap:          2047           0        2047

 

以人性化的方式显示内存使用情况:

 

free -h
              total        used        free      shared  buff/cache   available
Mem:           3.6G        897M        1.7G        173M        1.1G        2.4G
Swap:          2.0G          0B        2.0

 

持续每2秒刷新一次内存信息,显示5次:

 

free -s 2 -c 5
              total        used        free      shared  buff/cache   available
Mem:        3818948      918144     1764520      176432     1136284     2468432
Swap:       2097148           0     2097148


              total        used        free      shared  buff/cache   available
Mem:        3818948      918144     1764520      176432     1136284     2468432
Swap:       2097148           0     2097148


              total        used        free      shared  buff/cache   available
Mem:        3818948      918144     1764520      176432     1136284     2468432
Swap:       2097148           0     2097148


              total        used        free      shared  buff/cache   available
Mem:        3818948      918144     1764520      176432     1136284     2468432
Swap:       2097148           0     2097148


              total        used        free      shared  buff/cache   available
Mem:        3818948      918144     1764520      176432     1136284     2468432
Swap:       2097148           0     2097148

 

free命令基于系统整体的内存使用情况输出结果,其中包含了操作系统、应用程序和缓存等的内存占用信息:

total:总内存量。

used:已使用的内存量。

free:未使用的内存量。

shared:被共享使用的内存量。

buff/cache:缓存和缓冲区使用的内存量。

available:可用的内存量。

以上面“free -m“的结果为例,我这台ThinkPad X201有3729MB的物理内存(Mem那一行),程序已经使用897MB,尚有1714MB的物理内存没有分配出去。共享内存使用180MB,缓冲区和高速缓存使用1117MB。不难发现:total = used + free + buff/cache。而一直困惑我的是,free和available什么关系?

available = free + buff + cache - 不可回收部分

奔跑吧Linux内核(第二版)卷1:基础架构

核心点就是“不是所有的buff和cache都可以回收”。

常用命令组合

查找/替换/删除

 

//替换示例1
sed -i "s/aaa_cfg/bbb_cfg/g" `grep aaa_cfg -rl ./testcase/`

 

``中的grep命令使用“-r” “-l”选项先将testcase目录文件名中含有aaa_cfg字段的文件罗列出来,并作为sed命令的输入,执行替换操作,将文件内容中的"aaa_cfg"替换为"bbb_cfg"

 

//查找示例2
ls -1 *extra* | xargs grep -rnw "packet"

 

在文件名含有“extra”字段的文件中,搜索含有packet单词的文件,同时打印所在的行号

 

//删除示例3
sed -i "/ccc_cfg/d" `grep aaa_cfg -rl ./testcase/`

 

类似替换示例1,把替换操作改成了删除

 

//打印匹配所在字段的前后若干行
grep -rn -C 1 aaa_cfg ./testcase/

 

在testcase目录文件中查找含有aaa_cfg字段的行,并打印所在行的前后一行

SVN相关

 

//将目录及目录下个别文件添加到SVN服务器
svn add --parents scripts/run.py

 

执行这个命令后,scripts目录添加到SVN,除run.py文件外,目录下其他文件不会添加到SVN

 

//将目录下所有未添加到SVN的文件都添加到SVN
svn add `svn st | grep "^?" | awk '{ print $2 }'`
//使用xargs也可以实现
svn st | grep "^?" | awk '{ print $2 }' | xargs svn add

 

将grep和awk组合起来使用,罗列出来未添加到SVN的文件,然后使用svn add 添加进去。下面的组合命令类似:

 

//将已删除的文件提交到SVN
svn ci -m "delete files" `svn st|grep "^D"|awk '{print $2}'`

 

下面是比对文件的常用命令svn diff:

 

//查看本地文件和SVN服务器版本有何差别
svn diff run.py
//按版本比对
svn diff -r 999 run.py

 

日常工作

 

//查看某个用户正在仿真哪些用例
ps aux | grep usr_name | awk '{print $11}' | grep simv

 

 

//删除目录下的fsdb波形文件
rm -f `ls */*.fsdb`

 





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分