温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么使用shell获取进程名的内存及CPU利用率

发布时间:2022-04-18 10:23:26 来源:亿速云 阅读:441 作者:iii 栏目:开发技术

这篇文章主要介绍“怎么使用shell获取进程名的内存及CPU利用率”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用shell获取进程名的内存及CPU利用率”文章能帮助大家解决问题。

原理:

1)使用ps得到进程名的所有进程pid

ps -C process_name  -o pid=

2) 使用 /proc/$pid/status获得内存的占用,并循环求和;

3)使用top获取相关pid的cpu列表,并过滤第10列,求和。

在ubuntu18.04和centos7.9测试:

# !/bin/bash # author:robin # usage: bash proc.sh openresty if [ -e cpu_mr.log ] then     rm -f cpu_mr.log fi   pid_array=(122)   name=$1 if [ -z "$name" ]  then     name="openresty" fi #echo $name   #cpucmd: '-p 125 -p 235 -p 568' cpucmd='' i=0   #get all pid by proName funGetPids(){     tempstr=`ps -C $name -o pid=`     #echo $tempstr            for line in $tempstr     do         pid_array[$i]=$line         #echo ${pid_array[$i]}         let "i++"         cpucmd=${cpucmd}" -p $line "     done      return } funGetPids   if [ $i -eq 0 ]  then echo "{\"sum_vmrss\": -1,  \"sum_cpu\": -1 }" exit 0 fi   sum_vmrss=0 sum_cpu=0.0 #compute mem sum for pid in  ${pid_array[@]} do     vmrss_temp=`cat /proc/$pid/status|grep -e VmRSS|tr -d [:blank:][:alpha:][:]`     #echo 'vmrss_temp= '  $vmrss_temp     sum_vmrss=`expr $sum_vmrss + $vmrss_temp` done   #echo $cpucmd tempstr=`top -n 1 $cpucmd |tail -n +8 | awk '{print $10}'`   for line in $tempstr do #echo $line sum_cpu=$(echo "$sum_cpu+$line"|bc) done   # echo "-------------------" echo "{\"sum_vmrss\": $sum_vmrss,  \"sum_cpu\": $sum_cpu }"   exit

使用方法:

bash proc.sh  gnome-shell

输出json:

{"sum_vmrss": 423712,  "sum_cpu": 6.7 }

关于“怎么使用shell获取进程名的内存及CPU利用率”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI