linux - 获取单个进程的平均 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 百分比。亲切的问候
解决方案
我找到了我正在寻找更多研究的命令。
ps -o pcpu -p $pid
这正是我需要的命令,因为它计算了进程生命周期内的百分比。
推荐阅读
- php - 如果数组为空,则使用 foreach 进行单个循环
- angular - RxJS:获得多个响应
- docker - 运行 JHipster 的 Docker 拒绝连接到 Postgree SQL DB?
- snowflake-cloud-data-platform - 我们可以将列表或数组作为参数传递给雪花中的 JavaScript 过程吗?
- tkinter - 如何在窗口上显示文本
- vba - SignNow API 与 Ms Access VBA 的集成
- c# - 如何将 MessageEnvelope xmlns 转换为 json
- android - 适用于 Unity 的 Google In-App Review 未显示,未引发错误
- python - 我的代码没有读取收件箱中的所有电子邮件
- c++ - 新手:VisualStudioCode:如何从多个 cpp 文件中编译一个 exec?