首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从另一台机器上监控Ubuntu机器的CPU使用情况?

如何从另一台机器上监控Ubuntu机器的CPU使用情况?
EN

Stack Overflow用户
提问于 2014-12-11 04:46:29
回答 2查看 154关注 0票数 0

如下所示,我有两台运行Ubuntu12.04的机器,我需要找出进程名以及它的pid,它的CPU使用率超过70%。

以下是作为示例的机器-

代码语言:javascript
复制
machineA
machineB
machineC
machineD

我需要有我的shell脚本,它可以定期运行每15分钟,并检查是否有任何上述机器的CPU使用率超过70%。如果有任何机器的CPU使用率超过70%,则发送一封包含机器名称和进程名称及其id的电子邮件。

我将从machineX运行我的shell脚本,并且我已经为用户david设置了从machineX到上述所有机器的无密码ssh密钥。

进行所有这些监控的最佳方式是什么?

我有下面的命令,它可以让我的PID, %CPU and COMMAND name的进程的CPU使用率超过70%。

代码语言:javascript
复制
ps aux --sort=-%cpu | awk 'NR==1{print $2,$3,$11}NR>1{if($3>=70) print $2,$3,$11}'

不确定如何完全自动化此过程?

EN

回答 2

Stack Overflow用户

发布于 2014-12-11 05:02:41

嘿,伙计们,你们做错了什么,cpu在当前的执行间隔中达到了峰值。这意味着在下一秒,这个进程可能不会消耗任何资源。最好使用一种不同的方法来赶上cpu耗尽的进程。我最喜欢的方式是cpu时间。看一下这个例子:

代码语言:javascript
复制
panos@wintermute:~$ ps xafu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    18:53   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    18:53   0:00  \_ [ksoftirqd/
root         5  0.0  0.0      0     0 ?        S<   18:53   0:00  \_ [kworker/0:
root         7  0.0  0.0      0     0 ?        S    18:53   0:02  \_ [rcu_sched]

TIME:是进程吃bean的cpu时间。正常进程不需要占用太多cpu进程。因此,通过创建一个简单的shell脚本和一个小循环,您可以收集所需的信息。shell脚本可能如下所示:

代码语言:javascript
复制
#!/bin/sh
date
for i in "a b c d" ; do

echo machine${i}
ssh machine${i} ps xau|awk 'NR==1{print $2,$10,$11}NR>1{if($10>=5) print $2,$10,$11}'
echo -- --

done
exit

这将与bean占用5分钟cpu任何进程相匹配

票数 1
EN

Stack Overflow用户

发布于 2014-12-11 05:32:56

AWK做面向行的编辑(还有很多其他的东西)。括在括号{}中的语句块将在input.This行为的每一行上执行,这可能会受到限制,方法是在块前面加上一个条件(在普通C语法中)

NR==1 {}表示块将在第一个输入行上执行。在上面的示例中,第一个输入行中的字段2、10和11将打印在单行上。NR>1 {}表示将对第一行之后的每一行执行块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27410501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档