

linux-ubuntu 运行C语言等编写的程序时,如何查看程序占用的内存等资源信息
source link: https://blog.popkx.com/linux-ubuntu-how-to-get-informations-when-run-c-programed-appications-and-so-on/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

linux-ubuntu 运行C语言等编写的程序时,如何查看程序占用的内存等资源信息
尤其是嵌入式开发,程序开发好之后,非常关心其运行在 linux 主机上到底占用多少资源。查看内存占用时,当然可以对比运行程序前后系统内存的变化,但是这样非常不准确,而且,如果程序本身非常小,可能根本对比不出信息。本节介绍如何获取程序运行占用的资源。
先写一个测试 demo
demo 代码如下:
#include <stdio.h>
#include <unistd.h>
int main()
{
while(1){
sleep(2);
printf("test is running...\n");
}
return 0;
}
demo 非常简单,功能就是每隔两秒在终端打印
test is running...
编译之,在后台运行。
$ gcc -o test test.c
$ ./test & # 加 & 可以后台运行
[1] 44345
$ test is running...
test is running...
test is running...
test is running...
test is running...
...
44345
是 test 的 pid。
查看 demo 占用资源
linux 下查看某个进程占用的资源非常简单,只需要执行
cat /proc/44345/status
status
Name: test
State: S (sleeping)
Tgid: 44345
Ngid: 0
Pid: 44345
PPid: 2463
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 1000 1000 1000 1000
FDSize: 256
Groups: 4 24 27 30 46 113 128 1000
NStgid: 44345
NSpid: 44345
NSpgid: 44345
NSsid: 2463
VmPeak: 4352 kB
VmSize: 4352 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 652 kB
VmRSS: 652 kB
VmData: 184 kB
VmStk: 132 kB
VmExe: 4 kB
VmLib: 1944 kB
VmPTE: 32 kB
VmPMD: 12 kB
VmSwap: 0 kB
HugetlbPages: 0 kB
Threads: 1
SigQ: 0/7769
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
Seccomp: 0
Speculation_Store_Bypass: vulnerable
Cpus_allowed: ffffffff,ffffffff,ffffffff,ffffffff
Cpus_allowed_list: 0-127
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 112
nonvoluntary_ctxt_switches: 4
各种信息都有了, 看到 VmSize: 4352 kB
,才知道这么简单的程序也要占用这么多内存。
所以,只要知道程序的 pid 就可以查出它占用的资源。如果我们只知道程序名,而不知道它的 pid,怎么查呢?这里以 test 程序为例,只需执行
ps -A | grep test # grep 后加要查的程序名
44345 pts/2 00:00:00 test
发现 pid=44345,与前面是一致的。
如果想停止 test 程序,执行
kill 44345
即可
阅读更多: Linux笔记
Recommend
-
23
NEXT关站公告 NEXT关站公告 由于种种原因,NEXT即将关站,感谢大家5年来对NEXT的关注与热爱。 在没有N...
-
32
豆瓣租房 - 个人无中介租房,一键搜索全豆瓣平台的房源信息 - NEXT
-
56
雷锋网 AI 科技评论按:本文由美国莱斯大学博士后牛力为 AI 科技评论提供的独家稿件,未经许可不得转载。 传统的机器学习尤其是深度学习,需要大量的标注...
-
57
老猫我在南五环租了一个80平两居室,租房合同马上到期,房东打电话问续租的事,想要加房租;我想现在国家正在也在抑制房价,房子价格没怎么涨,房租应该也不会涨,于是霸气拒绝了,以下是聊天记录:确认不续租之后,两三年没找过房的我上网搜索租房,没想到出来一...
-
59
文/朱开云为深入贯彻“扫黑除恶”专项斗争工作精神,进一步规范北京市房屋租赁市场秩序,维护租赁当事人合法权益,北京市住房城乡建设委会同市场监督管理局、市互联网信息办公室、市通信管理局、市公安局起草了《关于规范互联网发布本市住房租赁信息的通知(
-
44
北京市住建委近期查处23家违规发布房源信息的房地产经纪机构。
-
26
我们发起 wuhan2020 开源项目,收集经过审核与确认过的武汉新型冠状病毒防疫相关信息,...
-
7
通过加入classpath的形式实现命令行运行java程序时引入第三方jar包 发表于 2017-05-03...
-
2
1. 讲故事 用惯了宇宙第一的 Visual Studio 再用其他的开发工具还是有一点不习惯,不习惯在于想用的命令或者面板找不到,总的来说还是各有千秋吧,今天我们来聊一下几个在调试中比较实用的命令: 虚拟内存布局
-
4
吕毅 发表于 6 天前 有些程序没有内置提供代理的功能,但遵循环境变量中设置的代理。如果我们能有办法仅为这个特定的程序设置环境变量,那么我们就可以在不开启全局代理的情况下单独为这样的程序开启代理。
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK