【发布时间】:2018-11-08 17:37:12
【问题描述】:
我想开发一个可以监控许多 Unix 客户端的 CPU/内存份额的程序。
用 C 编写的 Unix 客户端程序运行命令 popen 以获取 CPU / 内存信息并使用套接字将其发送到服务器。
例如,在 Solaris 11 上,使用以下命令获取 CPU / 内存信息。
CPU : top -n 1 |grep "CPU"|sed -n 1p|awk '{print $3}'|sed 's/[^0-9.0-9]//g'|awk '{print 100-$1}'
Memory : top -n 1 |grep \"Mem\" |awk '{print $2, $5}'|sed 's/[^0-9]/ /g'|awk '{print $2/$1*100}'
这里有问题。
Solaris 9、10 没有 top 命令。
HP-UX 不能使用 grep,因为它不能执行一次命令。
AIX 的 topas 也是如此。
如果你有其他命令或方式,请推荐给我。
【问题讨论】:
-
您是否检查了
aproposcmd 以找到 top 的类似服务(这真的让我感到惊讶,但 Solaris 文档没有列出 top)。但更重要的是每条流水线可以缩减为1个awk程序,即top | awk '/Mem/{gsub(/[^0-9]/," ");print $2/$1*100}'` 你需要重新排列你的 $2、$5 等,这样你才能真正得到你想要的输出.祝你好运。 -
Solaris:
prstat。许多系统监控解决方案都有可以做到这一点的代理,其中一些是开源的,所以你可以看看。前任。扎比克斯,纳吉奥斯。但请注意,这些工具中的绝大多数(包括付费工具)在分区、虚拟系统、云系统上都无法正常工作……它们无法访问虚拟机管理程序数据,因此它们报告的数字没有任何意义。前任。 50% 的 CPU 在权利发生变化时与时间流逝不一样。无法比较。
标签: memory cpu solaris aix hp-ux