Linux 计算bash中每个进程的CPU使用率%
我正在计算每个进程的CPU使用率%,并使用以下脚本进行计算:Linux 计算bash中每个进程的CPU使用率%,linux,bash,process,Linux,Bash,Process,我正在计算每个进程的CPU使用率%,并使用以下脚本进行计算: #!/bin/bash function getTotalTime() { echo $(awk '{print $14+$15}' /proc/${1}/stat) } function getStartTime() { echo $(awk '{print $22}' /proc/${1}/stat) } function getActualCPUTime() { echo $(cat /proc/s
#!/bin/bash
function getTotalTime() {
echo $(awk '{print $14+$15}' /proc/${1}/stat)
}
function getStartTime() {
echo $(awk '{print $22}' /proc/${1}/stat)
}
function getActualCPUTime() {
echo $(cat /proc/stat | awk '/cpu / {for(i=1;i<=7;++i) sum+=$i; print sum}')
}
pidArray=($(ls -l /proc | awk '$9 ~/^[0-9]+/ {print $9}'))
let index=0
for i in ${!pidArray[*]}
do
if [ ! -z ${pidArray[$i]} ] && [ -e "/proc/${pidArray[$i]}/stat" ]
then
cpuP[$index]=$(getTotalTime ${pidArray[$i]})
let index+=1
fi
done
cpuT=$(getActualCPUTime)
sleep 1
#hz=$(getconf CLK_TCK)
cpuT=$((($(getActualCPUTime)-$cpuT)))
#uptime=$(cat /proc/uptime | awk '{print $1}')
let index=0
for i in ${!pidArray[*]}
do
if [ ! -z ${pidArray[$i]} ] && [ -e "/proc/${pidArray[$i]}/stat" ]
then
#aux=$(($(getTotalTime ${pidArray[$i]})-${cpuP[$index]}))
#echo "$aux -> $cpuT"
cpuP[$index]=$((100*($(getTotalTime ${pidArray[$i]})-${cpuP[$index]})/$cpuT))
echo ${cpuP[$index]}
let index+=1
fi
done
#/bin/bash
函数getTotalTime(){
echo$(awk'{print$14+$15}'/proc/${1}/stat)
}
函数getStartTime(){
echo$(awk'{print$22}'/proc/${1}/stat)
}
函数getActualPutime(){
echo$(cat/proc/stat | awk'/cpu/{for(i=1;i我设法解决了它,问题是读取值的顺序
在我阅读之前
进程,cpu,睡眠,cpu,进程
正确的方法是
cpu,进程,睡眠,cpu,进程
这就是cpu值太小的原因,我在一些进程中得到了150%。当我在动力不足的笔记本电脑上使用13%的cpu时,我看到ksh;-(.所以>75%的cpu似乎是可疑的..你验证了你所有的数学运算了吗(我没有;-)你也知道“代码>顶部<代码>和其他100个系统监视工具吗?我认为你把它当作一个挑战,而不是作为一个真正的工具。如果你是,那么考虑重新启动的过程中有很多更少的子进程。我认为大多数的引用为代码> /PRO/$ { 1 }。/stat
可以归结为一次调用awk
。祝你好运。@Sheller这是一个挑战,操作是正确的(我在各自的文件中检查了它们,并用计算器计算了它们)问题是,它说进程X已经完成了150次时钟滴答声,而另一个文件说时钟滴答声已经达到100次,但显然有一些地方出了问题,这里有一些想法供您参考(我要提醒您,我的知识还不多;-)……但首先,对于%CPU,时钟滴答声?这两个想法似乎不同(如果仍然相关的话)。我现在无法研究在/proc/PID/stat
下显示的内容。另一个想法是,您看到的差异可能与调度程序(不完全是正确的术语)如何分配时间有关。如果让它运行更长时间,您可能会看到它们平衡。祝您好运。