微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在shell脚本中获取CPU使用情况?

我正在运行一些针对Java进程的JMetertesting,以确定Web应用程序在负载(500多个用户)下的响应速度。 JMeter会给出每个Web请求的响应时间,而且我已经写了一个脚本来每隔X秒ping一次Tomcatpipe理器,这将使我获得当前JVM堆的大小。

我想收集服务器上Tomcat使用的cpu百分比的统计信息。 我试图在一个shell脚本中使用ps这样做:

PS_RESULTS=`ps -o pcpu,pmem,nlwp -p $PID`

…每隔X秒运行一次命令并将结果附加到文本文件中。 (对于任何人想知道, pmem =%mem使用和nlwp是线程数)

但是我发现这给出了“cpu利用率的百分比”的不同定义,根据ps的手册, pcpu被定义为:

xcopy和xcacls脚本

如何使Windows软件作为脚本内的其他用户运行?

使用 XSLT脚本修改XML节点

什么工具和语言可用于Windows Shell脚本?

使用通配符(*)将文件复制到bash脚本中的文件夹 – 为什么它不工作?

“##。#”格式的进程的cpu利用率。 cpu使用时间除以进程运行时间(cputime / realtime ratio),以百分比表示。

换句话说, pcpu在进程的整个生命周期中为我提供了进程占用cpu的百分比。

因为我想每X秒采样一次,所以我希望仅在当前时间收集进程的cpu利用率 – 类似于top给我的(上次更新之后进程的cpu利用率)。

我怎样才能从一个shell脚本收集这个?

如何将Example.bat更改为Example.pl?

bash脚本根据修改文件date删除目录

自动更新的文本输出到屏幕和文件

在Windows XP系统locking/解锁时触发事件

如何在bash中获取MouseMove和MouseClick?

使用top -b (和其他开关,如果你想要不同的输出)。 它只会转储到stdout而不是跳入curses窗口。

在执行测试(如JMeter)时监控服务器的最有用的工具是dstat 。 它不仅为您提供了一系列来自服务器的统计信息,还将其输出到csv以便于导入到电子表格中,并允许您使用Python编写的模块扩展该工具。

用户负载: top -b -n 2 |grep cpu |tail -n 1 |awk '{print $2}' |sed 's/.[^.]*$//'系统负载: top -b -n 2 |grep cpu |tail -n 1 |awk '{print $3}' |sed 's/.[^.]*$//'空载: top -b -n 1 |grep cpu |tail -n 1 |awk '{print $5}' |sed 's/.[^.]*$//'

每个结果都是十进制的圆形。

关闭我的头顶,我会使用系统状态的/ proc文件系统视图 – 查看man 5 proc以查看/ proc / PID / stat的条目格式,其中包含总cpu使用率信息,并使用/ proc / stat来获取全局系统信息。 要获得“当前时间”使用情况,您可能确实是指“最近N秒使用的cpu”; 分开一小段距离取两个样本来查看当前的cpu消耗率。 然后,您可以将这些值嵌入一些有用的东西。 实际上,这可能比纯shell脚本更像Perl / Ruby / Python作业。

您可能可以通过/ proc / PID / status获得粗略的数据,从而给出进程的平均睡眠时间。 相当粗糙的数据虽然。

也使用1作为迭代计数,所以你将得到当前的快照,而不用等待在$延迟时间得到另一个

top -b -n 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐