您现在的位置是:网站首页> 编程资料编程资料
如何使用shell获取进程名的内存以及CPU利用率_linux shell_
2023-05-26
382人已围观
简介 如何使用shell获取进程名的内存以及CPU利用率_linux shell_
原理:
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利用率的文章就介绍到这了,更多相关shell获取进程名内存内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- jenkins+shell自动化部署的实现步骤_linux shell_
- shell编程中for循环语句的实现过程及案例_linux shell_
- awk脚本统计一组单词中字母出现最多最少频率_linux shell_
- NetCat工具命令介绍及远程文件传输实现_linux shell_
- PXE kickstart自动化部署系统安装_linux shell_
- Shell脚本一键安装Nginx服务自定义Nginx版本_linux shell_
- shell脚本如何读取properties文件中的值_linux shell_
- shell脚本配合zabbix实现tomcat的故障自愈功能_linux shell_
- Shell内置命令教程之alias和echo_linux shell_
- Shell内置命令之exit的语法与实例_linux shell_
