Как контролировать выбранные процессы на хосте Centos 5.x?

Я хотел бы контролировать выбранную группу процессов, vmware vm, работающих на моем хосте centos 6. "top" дает мне большую часть того, что я хочу, потому что я могу использовать -p, чтобы указать только эти процессы, и -c, чтобы получить полную командную строку, так как я в конечном счете заинтересован в том, чтобы увидеть фактические имена контролируемых виртуальных машин. Однако полная командная строка слишком длинна для отображения на экране. Я думал о том, чтобы записать вывод top в / tmp и выполнить там какой-то синтаксический анализ, но, очевидно, top записывает только 80 символов, сокращая имя виртуальной машины.

Я подумал, что, возможно, я мог бы использовать "ps" для чего-то подобного, но использование ЦП при таком подходе никогда не меняется - как это может быть?

Любые предложения относительно того, как я мог бы осуществить это?

ТИА!

2 ответа

Если честно, я бы использовал Monit для этого. Он доступен из RPMForge через yum для вашей конкретной версии Linux.

Monit - это инструмент для мониторинга процессов и демонов. Обычно это делается с помощью PID, но вы также можете сопоставить строку процесса. Поскольку строки процесса сервера VMWare заканчиваются спецификацией "vm_name.vmx", вы можете настроить Monit для проверки этой строки. Единственный пример системы VMWare Server 1.0.x, который у меня есть, имеет запущенную ОДНУ ВМ, но если вы знаете имена файлов *.vmx, вы можете перечислить их независимо в файле конфигурации monit.

Вот вывод 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 в файл конфигурации monit (создание и запись для каждой уникальной виртуальной машины, которую необходимо отслеживать)...

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

Затем есть веб-интерфейс для управления процессами по адресу http://servername:2812/

введите описание здесь

введите описание здесь

Ты можешь использовать stty установить cols, чтобы стать больше top выход.

stty cols 500 && top

Изменение размера вашего терминала сбросит настройки cols, и вы потеряете его. Вы можете использовать что-то вроде приведенного ниже сценария, чтобы выполнить пакетный вывод для дальнейшей обработки. Он пытается сохранить старые настройки cols, поэтому вам может потребоваться настроить их в зависимости от системы (протестировано на RHEL/CentOS/SL6.1)

#!/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

Другие вопросы по тегам