網站首頁 編程語言 正文
原理:
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 }
總結
原文鏈接:https://blog.csdn.net/robinfoxnan/article/details/124195011
相關推薦
- 2022-04-20 Python?設計模式行為型解釋器模式_python
- 2022-07-20 python密碼學列置換密碼學習_python
- 2022-07-19 Angular @Injectable 注解的工作原理淺析
- 2023-05-22 pycharm中執行.sh文件的方法步驟_python
- 2022-03-11 .NET6中使用CuteEditor詳解_實用技巧
- 2022-04-01 kubeadm報錯:The connection to the server localhost:8
- 2022-08-29 .NET?Core讀取配置文件_實用技巧
- 2022-06-14 python?多線程threading程序詳情_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支