Shell:一行命令如何实现采集某一进程一段时间内CPU使用率

首先,能想到使用top查看进程的CPU使用率,以java进程编号251346为例进行介绍

top -d 1 -p 251346

-d 表示每秒采集一次

CPU使用率是显示出来了,但这样只能在屏幕上原地刷新,我们希望能把数据每时每刻的数据都保存下来,方便进行后续分析:

top -b -d 1 -p 251346

-b 批处理模式,即会把每次采集的数据都显示出来,而不是原屏幕刷新

 

由于只需要进程251346的数据,其它全局数据不需要,所以过滤一下

top -b -d 1 -p 251346 | grep 251346

由于只是想要其中CPU使用率的数据,我们把这块数据截取出来

top -b -d 1 -p 251346 | grep --line-buffered 251346 | cut -b 49-54

--line-buffered 表示将每行数据缓存一下,这样cut命令才能按行处理
cut -b 49-54 表示截取每行第49到第54个字节

这时,如果想把结果保存到文件,假如使用如下命令

top -b -d 1 -p 251346 | grep --line-buffered 251346 | cut -b 49-54 | tee top.txt
或
top -b -d 1 -p 251346 | grep --line-buffered 251346 | cut -b 49-54 > top.txt

发现并没有导入到文件中,说明使用cut命令后不能将结果导入到文件,这里我们想到的是使用一个函数来实现

logger() { cpu=$(echo "$@") | cut -d ' ' -f 9; echo "$(date +'%Y-%m-%d %H:%M:%S'): $cpu"; }

这个函数接收一行数据,以空格为分隔符,从中截取出第9列,第9列正是CPU使用率,同时打印这条记录时还会加上记录的采集时间,便于对数据作分析用

接下来的问题就是通过管道怎么给这个函数传每行的数据,这里会用到xargs命令

xargs -n 1 -I {} bash -c 'logger {}'

-n 1  表示每次传递一个参数
-I {} 表示指定一个占位符{},每个参数会替换这个占位符,这个点位符所代表的参数,作为logger的输入

最终的shell命令如下:
 

logger() { cpu=$(echo "$@") | cut -d ' ' -f 9; echo "$(date +'%Y-%m-%d %H:%M:%S'): $cpu"; }; export -f logger; \
top -b -d 1 -p 251346 | grep --line-buffered 251346 | xargs -n 1 -I {} bash -c 'logger {}' | tee top.txt

export -f logger 表示在当前环境中导出函数,便于在其它命令中使用

执行结果如下,同时也会将结果保存到top.txt

以上是采用CPU使用率的一行命令,如果要采用内存使用率或其它信息,只要将上面的命令做相应调整就行了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode连接unbuntu失败,显示Downloading vs code server...

问题: vscode连接unbuntu失败,右下角显示:Downloading vs code server... 且当再次输入密码时,仍然出现:Downloading vs code server... 重复多次,无法解决。 解决办法: 这是因为服务器端的…

华为OD机试(C卷,200分)- 字符串拼接、田忌赛马

(C卷,200分)- 字符串拼接 题目描述 给定 M&#xff08;0 < M ≤ 30&#xff09;个字符&#xff08;a-z&#xff09;&#xff0c;从中取出任意字符&#xff08;每个字符只能用一次&#xff09;拼接成长度为 N&#xff08;0 < N ≤ 5&#xff09;的字符串&#xff0c; 要求…

凌风云 - 十大网盘资源搜索 Ver 6.0 版正式上线

《凌风云》作为网盘资源专业搜索领域的佼佼者&#xff0c;汇聚了国内十大网盘的丰富资源&#xff0c;凌风云搜索弥补其他搜索引擎可能无法搜索到相关资源的缺陷&#xff0c;作为专业的搜索引擎服务网络平台&#xff0c;您只需输入关键词&#xff0c;通过智能算法精准匹配&#…

C语言2D游戏

目录 开头程序程序的流程图这个游戏的效果结尾 开头 大家好&#xff0c;我叫这是我58。在今天&#xff0c;我用C语言编译出了我的第一个2D游戏。如果你想就看这个2D游戏或者与之相关的内容话&#xff0c;就看下下面的内容吧。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #defi…

第六次作业

一、视图作业 1、创建视图v_emp_dept_id_1&#xff0c;查询销售部门的员工姓名和家庭住址 2、创建视图v_emp_dept&#xff0c;查询销售部门员工姓名和家庭住址及部门名称。 3、创建视图v_dept_emp_count(dept_name,emp_count,avg_salay)&#xff0c;统计每个部门人数并计算平均…

Pandas基础03:数据排序与增删

上一节我们介绍了通过按行索引和按列索引找出相关数据的方法。本章节将进一步介绍如何筛选数据&#xff0c;并对数据进行排序、增删的方法。 示例表格和上一节相同。 1.数据筛选 Python中可以通过区域筛选&#xff0c;即获取某几行某几列的方法得到数据。例如&#xff0c;我要…

数据分表和分库原理

数据分表和分库是数据库设计中常见的扩展和优化手段&#xff0c;用于解决大数据量下的性能瓶颈问题。以下是数据分表和分库的原理&#xff1a; 一、数据分表&#xff08;Sharding&#xff09; 原理&#xff1a; 数据分表是将一个大的数据库表按照一定的规则拆分成多个较小的…

pwn误区的buffer

注意栈顶是闭合的&#xff0c;栈底才是打开的 栈图&#xff1a; |--------------------------| | | | | buffer溢出的时候&#xff0c;是从栈底到栈顶方向

vue3的常用 Composition API有哪些?

Vue.js 3.0 引入了 Composition API&#xff0c;作为一种新的组织组件逻辑的方式&#xff0c;相比于传统的 Options API&#xff0c;Composition API 提供了更灵活、更可复用的代码组织方式。 以下是 Vue 3.0 中常用的 Composition API&#xff1a;setup() 函数&#xff1a; s…

Llama-factory源码详细解读

微调 采用逐行调试的方法&#xff0c;细节来看SFT代码 #mermaid-svg-ygujiVh1wygmSv74 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ygujiVh1wygmSv74 .error-icon{fill:#552222;}#mermaid-svg-ygujiVh1wygmSv74…

实施团队人员配备计划

实施团队人员 &#xff08;一&#xff09;项目经理职责 全面负责项目的规划、执行和监控&#xff0c;确保项目按时、按质量要求完成。与客户沟通&#xff0c;明确项目需求和目标&#xff0c;协调各方资源&#xff0c;解决项目中的重大问题。制定项目计划和预算&#xff0c;监…

LINUX命令行curl指令与python内置urllib模块

urllib是python御用的易用的轻便模块&#xff0c;curl是Linux功能强大的命令行工具&#xff0c;都是参与Web的利器。 (笔记模板由python脚本于2024年07月10日 18:41:12创建&#xff0c;本篇笔记适合喜欢Python和Linux的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&…

【嵌入式DIY实例-ESP8266篇】-LCD1602显示DS1631传感器数据

LCD1602显示DS1631传感器数据 文章目录 LCD1602显示DS1631传感器数据1、DS1631介绍2、硬件准备与接线3、代码实现本文介绍了如何将 ESP8266 NodeMCU 板 (ESP-12E) 与 DS1631 数字温度传感器连接,其中温度值(摄氏度和华氏度)打印在 1602 LCD 屏幕上。 本项目中使用的 1602 LC…

最佳 iPhone 解锁软件工具,可免费下载用于电脑操作的

业内专业人士表示&#xff0c;如果您拥有 iPhone&#xff0c;您一定知道忘记锁屏密码会多么令人沮丧。由于 Apple 的安全功能强大&#xff0c;几乎不可能在没有密码或 Apple ID 的情况下访问锁定的 iPhone。 “当我忘记密码时&#xff0c;如何在没有密码的情况下解锁iPhone&am…

【Cesium开发实战】地下模型功能的实现,可设置透明度及显示隐藏

Cesium有很多很强大的功能&#xff0c;可以在地球上实现很多炫酷的3D效果。今天给大家分享一个可自定义高度的电子围栏。 1.话不多说&#xff0c;先展示 地下模型 2.设计思路 按项目需求&#xff0c;需要对加载在地下部分的模型控制显示隐藏&#xff0c;以及透明度的设置。增…

仕考网:公务员考试的录取流程

公务员考试的录取流程分很多个阶段&#xff0c;以下是流程介绍&#xff1a; 1. 报名阶段&#xff1a;考生需根据公布的招聘信息和岗位要求进行报名。 2. 笔试阶段&#xff1a;公务员笔试&#xff0c;包括申论和行测两部分。 3. 成绩公布与面试资格&#xff1a;笔试合格者将获…

编译原理:词法分析器 Flex工具的使用(简单易懂)

目录 词法分析器 & Flex工具的使用背景&#xff1a;编译器和解释器概念区别编译器的实现 词法分析器(Lexer)工具(Flex)安装Flex目标程序&#xff1a;verilog代码Flex程序格式DeclarationsDefinitionsRulesUser subroutines如何通过flex读入文件&#xff1f; 完整程序编译&a…

最小生成树(算法篇)

算法之最小生成树 最小生成树 概念&#xff1a; 最小生成树是一颗连接图G所有顶点的边构成的一颗权最小的树&#xff0c;最小生成树一般是在无向图中寻找。最小生成树共有N-1条边(N为顶点数)。 算法&#xff1a; Prim算法 概念&#xff1a; Prim(普里姆)算法是生成最小生…

每天两道Java面试题(一)

1、this关键字和super关键字的区别及联系 this关键字用在本类中。 在类的内部&#xff0c;可以在任何方法中使用this引用当前对象。 this关键字是用来解决全局变量和局部变量之间的冲突。 this()可以调用同类中重载的构造方法&#xff0c;并且需要放在第一行。 super关键字…

Unity入门之重要组件和API(3) : Transform

前言 Transform类主要处理游戏对象(GameObject)的位移、旋转、缩放、父子关系和坐标转换。 1.位置和位移 1.1必备知识点&#xff1a;Vector3 Vector3 主要用来表示三维坐标系中的一个点或者一个向量。 【声明】 Vector3 v1 new Vector3(); Vector3 v2 new Vector3(10, 10…