如何监视在centos 5.x主机上的select进程?

我想监视一组选定的进程,vmware vm,运行在我的centos 6主机上。 “top”给了我很多我想要的东西,我可以使用-p来指定那些进程,-c来获得完整的命令行,因为我最终希望看到被监视的虚拟机的实际名称。 但是,完整的命令行太长而不能显示在屏幕上。 我想写顶部的输出到/ tmp,并在那里做一些parsing,但显然顶级只写80个字符,截断虚拟机的名称。

我想也许我可以用'ps'来做类似的事情,但是使用这种方法的CPU使用率从来不会改变 – 那又怎么样呢?

任何build议,如何我可以把这个closures?

TIA!

说实话,我会用这个Monit 。 它可以从RPMForge通过yum为您的特定版本的Linux提供。

Monit是监视进程和守护进程的工具。 通常这是通过PID完成的,但是你也可以匹配一个进程string。 由于VMWare Server进程string以“vm_name.vmx”规范结束,因此您可以将Monit设置为针对该string进行检查。 我有一个VMWare Server 1.0.x系统的唯一例子就是有一个虚拟机正在运行,但只要知道* .vmx文件的名称,就可以在monitconfiguration文件中单独列出它们。

以下是monit procmatch vmx的输出:

 [root@abc ~]# monit procmatch vmx List of processes matching pattern "vmx": ------------------------------------------ /usr/lib/vmware/bin/vmware-vmx -# product=2;name=VMware Server;version=2.0.1;buildnumber=156745;licensename=VMware GSX Server for Linux;licenseversion=3.0 build-156745; -@ pipe=/tmp/vmhsdaemon-0/vmx226abb1efa53200b;readyEvent=52 /vmware/abc_Web/abc_Web.vmx ------------------------------------------ Total matches: 1 

将一个小的VMWare检查项添加到监视configuration文件(为每个需要监视的独特VM创build和input)…

 check process vmware matching "vmware-vmx" 

这显示了正在监视的内容。

 [root@abc ~]# monit status Process 'vmware-vmx' status running monitoring status monitored pid 25171 parent pid 1 uptime 992d 8h 5m children 0 memory kilobytes 1107796 memory kilobytes total 1107796 memory percent 18.1% memory percent total 18.1% cpu percent 0.0% cpu percent total 0.0% data collected Thu Apr 26 04:49:12 2012 

然后,有一个Web界面来控制http:// servername:2812处的进程

在这里输入图像说明

在这里输入图像说明

你可以使用stty来设置cols来获得更大的top输出。

 stty cols 500 && top 

调整您的terminal将重置cols设置,你会失去它。 你可以使用类似下面的脚本来做批处理输出进行进一步处理。 它试图保持旧的cols设置,所以你可能需要调整,取决于系统(在RHEL / CentOS / SL6.1上testing)

 #!/bin/bash OLDCOLS=$(stty -a | grep columns | sed 's/.*columns \(.*\); line.*/\1/') stty cols 500 IFS=" " PIDS=$(ps axuww | grep "$1" | grep -v grep | awk '{print $2}' | tr '\n' ',' | sed 's/^/-p/;s/,$//') OUTPUT=$(top -bcn1 $PIDS) echo "$OUTPUT" stty cols $OLDCOLS 

脚本使用像./scriptname vmware-vmx