首页 > 解决方案 > 获取单个进程的平均 CPU 使用百分比,直到我在 bash 脚本中将其杀死

问题描述

我有一个 bash 脚本,我想知道一个进程使用了​​多少 CPU 时间百分比,直到我在脚本的最后一行杀死它。我知道我通常可以通过 time -v 命令执行此操作,但是我的进程是基于 Erlang/OTP 的,并且通过使用 time 命令它仅测量启动进程统计信息。因此,我想使用我可以轻松获得的进程 PID,并使用它来获取 CPU 时间百分比,直到脚本结束。目前我正在使用 pidstat 但它只给我线性时间间隔的统计信息。我想测量从进程开始到被杀死的确切时间间隔。峰值 RAM 统计数据也会很好。你能推荐我在这种情况下可以使用的任何命令吗?

这是我的 bash 脚本:

sudo emqx start
sleep 10 
mypid=$(sudo emqx pid)
echo $mypid
sudo pidstat -h -r -u -v -p "$mypid" 5 > $local/server_results/test1/emqxstats_$b.txt &

# process for load testing
# jthreads = amount of publishing users
sleep 5
until sudo ~/Downloads/apache-jmeter-5.2.1/bin/jmeter -n -t $local/testplans/csv.jmx -Jport=$a | grep -m 1 "... end of run"; do : ; done 
sudo emqx stop
kill %!

因此,我想测量从启动 mosquitto 到 Apache Jmeter 测试到达最后两行之间的时间间隔的 CPU 百分比。亲切的问候

标签: linuxbashubuntucpupid

解决方案


我找到了我正在寻找更多研究的命令。

ps -o pcpu -p $pid 

这正是我需要的命令,因为它计算了进程生命周期内的百分比。


推荐阅读