網(wǎng)站首頁 編程語言 正文
原理:
1)使用ps得到進(jìn)程名的所有進(jìn)程pid
ps -C process_name -o pid=
2) 使用 /proc/$pid/status獲得內(nèi)存的占用,并循環(huán)求和;
3)使用top獲取相關(guān)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 }
總結(jié)
原文鏈接:https://blog.csdn.net/robinfoxnan/article/details/124195011
相關(guān)推薦
- 2022-06-23 C++11系列學(xué)習(xí)之類型推導(dǎo)_C 語言
- 2023-02-27 pandas中concatenate和combine_first的用法詳解_python
- 2023-03-21 C#中寫入和讀取TXT文件問題_C#教程
- 2022-09-14 Python深入淺出分析enum枚舉類_python
- 2023-03-16 PostgreSQL?復(fù)制表的?5?種方式詳解_PostgreSQL
- 2022-10-12 Docker部署搭建WebDav服務(wù)的詳細(xì)過程_docker
- 2022-06-15 python多線程實(shí)現(xiàn)動(dòng)態(tài)圖繪制_python
- 2022-08-15 使用volatile保證多線程之間實(shí)例變量的可見性
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支