shell脚本每隔2s获取某个进程的cpu和mem数据并保存到csv文件

shell脚本每隔2s获取某个进程的cpu和mem数据并保存到csv文件

shell脚本如下
echo "%CPU,%MEM" > cpu_test.csv
pid=1 #Can be change by yourself
while true
do
top -bn1 -n 1 -p $pid | tail -1 | awk ‘{ print $9,$10 }‘ | sed ‘s/ /,/‘ >> cpu_test.csv
sleep 2 #delay time
done

脚本中涉及的相关知识
top命令查看系统进程相关参数
tail排序
awk进行文本处理
sed进行符号替换
管道与重定向

TOP命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源使用情况。
top -bn1 显示所有的进程信息。
top -n 1 只显示一屏的信息,供管道调用。
top -p $pid 查看指定的pid的进程的信息,-p后面加指定的pid的数字。

Tail与head命令
head命令总是读取输入文件或者或者管道输入的头部
如:head -n 4 file 该命令会打印文件的前4行
tail命令读取输入文件的最后若干行或者尾部 tail -5 file 该命令会打印文件的后5行

awk命令
可以使用awk命令进行按行取固定位输出
awk ’ { print $1, $7 } ’ file >newfile 将每一行的第一位和第七位进行输出,并重定向到新的文件中去

sed命令
使用sed命令 将:替换成空格,并将输出结果定位到新文件中。
sed ‘s/text/replace/g’ file >newfile
text是要被替换的文字或者符号、replace是要替换成为新的文字或符号 g表示全部进行替换
脚本中是把空格替换成逗号输出到文本中去。

管道与重定向
管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。
例如: ls | grep test 使用ls查看当前目录下的文件和文件夹,grep进行过滤显示test相关的文件或者文件夹

将原本输出到标准输出的数据重定向到一个文件中,重定向的一些符号如下:

原文链接:https://blog.csdn.net/zhongweidu3/article/details/88785580

原文地址:https://www.cnblogs.com/Yanss/p/12218756.html

时间: 2024-10-13 05:47:46

shell脚本每隔2s获取某个进程的cpu和mem数据并保存到csv文件的相关文章

内核模块遍历进程和任务队列保存到proc文件中

实现一个模块用它遍历当前进程的父进程和任务队列,并将遍历的结果输出到一个proc 文件中(遍历可以从 current 当前进程开始,父进程遍历到初始化进程,遍历任务队列可以利用 for_each_process 宏). 下面是我的内核模块的实现部分: /************************************************************ * 使用内核模块从当前进程开始先前遍历,知道找到第一个进程为止 * * 并将遍历的结果保存到proc文件中 * ******

【shell脚本实例】一个恶作剧—— kill掉占用CPU较高的matlab进程

我们实验室有台服务器,博士们在服务器上跑MATLAB,基本都是4核都是超过95%的CPU占用,想了个恶作剧的shell 定时kill掉MATLAB程序,是不是很邪恶啊,哈哈~~~  不过我只是干过一次,因为老伯们也不容易啊,屌丝何苦为难屌丝... 废话不多说了上脚本! ? 1 2 3 找出CPU占用超过90%的MATLAB进程,grep -v 去掉"grep"进程 pids=`ps aux|grep "MATLAB"|grep -v "grep"

shell 脚本---每隔几个小时查看日志文件中包含某些字符串的行数

在linux生产环境下,有如下这样的一个平常运维需要的工作. 每隔一段时间,比如两个小时,就要对每秒都要产生日志的日志文件(这里假设为testfile.out,其绝对路径为/home/panlm/shellpra/testfile.out)进行一个操作,这个操作是将日志中包含某些字符串的行给单独打印出来,并重新放在一个文件(这里的文件假设为out.log)中.这些需要匹配的字符串可以按这种方式表示"0x216000ab"其中ab为01到18的连续整数. 实现这样一个要求的做法主要有两步

.NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?

原文:.NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用? 都知道可以在任务管理器中查看进程的 CPU 和内存占用,那么如何通过 .NET 编写代码的方式来获取到 CPU 和内存占用呢? .NET 中提供了 PerformanceCounter 类型,可以用来监视系统中大量的性能问题. 本文内容 获取全局 CPU 和内存占用 获取当前进程的 CPU 和内存占用 获取全局 CPU 和内存占用 要获取到全系统中的 CPU 占用率,获取全系统中内存占用,需要首先分

转:ffmpeg学习(二) 通过rtsp获取H264裸流并保存到mp4文件

本篇将使用上节http://www.cnblogs.com/wenjingu/p/3977015.html中编译好的库文件通过rtsp获取网络上的h464裸流并保存到mp4文件中. 1.VS2010建立VC++  win32控制台项目 2.在工程目录下建立lib目录和include目录,将已编译好的lib拷打lib下,include拷到include下,dll拷到Debug目录下 3.工程属性--配置属性--VC++目录--包含目录,添加ffmpeg头文件目录及其他第三方头文件目录 链接器--常

shell脚本根据端口号kill掉进程

假设一个应用场景,在某种环境下, 我们需要去关闭某个应用进程, 然后重新部署启动.不一样的场景需要使用不一样的脚本,比如在使用tomcat时,可以通过start.up.sh和shutdown.sh进行操作,但是别的好像就没有好的办法了,所以采用的是kill掉应用的PID, 然后重新部署启动.然而每次启动的PID都是不一样的, 但是我们知道的是每次都会启动同样的端口号, 如果通过端口号查询到应用的PID再去kill掉,就会省事很多. 接下来可以在shell中通过端口查询PID port=8030

程序猿(媛)Shell脚本必备技能之一: 在Linux下如何自动备份mysql数据

作者:荀彧(花名) Background:鉴于QAS数据库曾遭到毁灭性损害,极其桑心L.为了避免这种玉石俱焚的状况再度发生,于是我们找出了一种应对方案.这里给大家分享一下如何实现定时备份mysql数据库的脚本. Target:每天对QAS数据库进行数据及表的备份并且删除掉10天之前的备份文件. Working:三个步骤搞定. Step 1: 准备两个文件 建备份文件夹qas_db_bak,建脚本文件autobackupmysql_qas.sh [[email protected]***** we

shell脚本监控内嵌linux系统业务、CPU、内存等

定制板卡中bash无法使用,使用标准sh完成对系统及业务监控 #! /bin/sh #Process_Name="/guard /aps /sa /zyguard" Process_Name="/mp /mcu" #获取主机IP地址 ip=`ifconfig eth0 |grep "inet addr"| cut -f 2 -d ":"|cut -f 1 -d " "` gstr="/guard&

c# 获取某个进程的CPU使用百分百(类似任务管理器中显示CPU)

using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Management; using System.Text; using System.Threading; using System.Threading.Tasks; namespace 进程监控 {     class Program     {         static voi