获取指定进程的CPU信息
作者:
| 更新日期:上次不会的问题,以无解告终。
本文首发于公众号:天空的代码世界,微信号:tiankonguse
零、背景
上篇文章提出一个问题:大家知道怎么用TOP
的命令行输出指定的字段吗?
如果你知道的话可以告诉我,有红包奖励。
有人微信私信、有人公众号私信、有人公众号留言、有人朋友圈留言。
可是直到现在,所有的反馈都没给出我想要的答案。
其中,一个评论最优秀。
既然没找到,那就算了吧,毕竟其他方法还是很多的。
下面分享几个方法。
一、TOP 获取信息
通过 man top 可以看到 top 的介绍信息。
可以看到, top 的作用是display Linux processes
。
也就是展示系统所有进程的信息。
top 默认就展示了 CPU、内存、用户名、进程号等信息,所以我们只需要想办法把内存信息提取出来就行了。
TOP 有一些参数很有用。
-b
可以非交互式展示数据。
-n
可以控制输出几次数据。
-p
可以显示指定的进程。
利用这三个参数我们就可以采集到若干条 TOP 的原始数据了。
然后我们使用 grep 筛选出目标行,使用 awk 输出指定列数即可。
由于我的云主机 VPS CPU 都很低,我这里就使用内存来举例吧。
二、PS 获取信息
ps 也是展示进程信息的。
由于历史原因, ps 的参数语法有三种形式。
1、UNIX 模式,有一个-
,比如ps -aef
。
2、BSD 模式,没有-
,比如ps aux
3、GNU 模式,有两个--
,比如ps --pid=1,2
每种模式有自己的语法,这也是为什么会看到不同的人敲得ps
不一样。
这里我们不具体介绍ps
的细节,只介绍如何输出指定的进程信息。
ps 用于控制输出的字段参数是-o
,然后指定需要的字段即可输出相关信息。
对于 ps,想获取多秒的数据,就需要自己进行 sleep 采集数据了。
三、proc stat
其实,/proc/pid/
里面都储存了该进程的所有信息。
只不过储存的是 cpu 的运行时间,而不是比例,所以需要自己进行计算。
四、最后
好了,这篇文章就介绍完了。
关于实际操作,我录了一个视频,上传B站了。
由于视频需要审核,文章先发出来了,想看视频的可以公众号后台回复视频CPU
获取地址。
-EOF-
本文公众号:天空的代码世界
个人微信号:tiankonguse
公众号ID:tiankonguse-code
本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。