获取指定进程的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
如果你想留言,可以在微信里面关注公众号进行留言。

关注公众号,接收最新消息

tiankonguse +
穿越