[PERL] подсчёт процессов в UNIXе по категориям.

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
TITANius
сержант
Сообщения: 197
Зарегистрирован: 2009-10-27 11:33:10

[PERL] подсчёт процессов в UNIXе по категориям.

Непрочитанное сообщение TITANius » 2010-02-17 21:45:14

Имеется Freebsd + Perl.
Нужно подсчитать количество процессов висящих в системе по их типам: uninterruptible, idle, lock, runnable, sleeping, stopped, interrupt, zombie.
Их можно определить по state в ps.

На shell'е это выглядит буквально следующим образом:

Код: Выделить всё

#!/bin/sh

ps -axo state= | sed -e 's/^\(.\).*/\1/' | awk '{ processes++; stat[$1]++ } END {
    print "processes.value " 0+processes;
    print "uninterruptible.value " 0+stat["D"];
    print "idle.value " 0+stat["I"];
    print "lock.value " 0+stat["G"];
    print "runnable.value " 0+stat["R"];
    print "sleeping.value " 0+stat["S"];
    print "stopped.value " 0+stat["T"];
    print "interrupt.value " 0+stat["W"];
    print "zombie.value " 0+stat["Z"];
    }'
Как это реализовать на перле ума не приложу :( ... please help
Последний раз редактировалось TITANius 2010-02-17 23:46:58, всего редактировалось 1 раз.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PERL] подсчёт процессов в UNIXе по категориям.

Непрочитанное сообщение hizel » 2010-02-17 22:02:36

исходники ps намекнули на kvm.h

http://search.cpan.org/~dland/BSD-Proce ... Process.pm
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
TITANius
сержант
Сообщения: 197
Зарегистрирован: 2009-10-27 11:33:10

Re: [PERL] подсчёт процессов в UNIXе по категориям.

Непрочитанное сообщение TITANius » 2010-02-17 22:57:57

hizel писал(а):исходники ps намекнули на kvm.h
http://search.cpan.org/~dland/BSD-Proce ... Process.pm
А если не прибегать к отдельным модулям ?

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PERL] подсчёт процессов в UNIXе по категориям.

Непрочитанное сообщение hizel » 2010-02-17 23:04:16

а в чем проблема?
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
TITANius
сержант
Сообщения: 197
Зарегистрирован: 2009-10-27 11:33:10

Re: [PERL] подсчёт процессов в UNIXе по категориям.

Непрочитанное сообщение TITANius » 2010-02-17 23:16:05

hizel писал(а):а в чем проблема?
не созрел я ещё для модулезависымых скриптов (3 дня на перле) :)

может пора? :)
если не сложно подкинь инфу как стоит делать чтобы при использовании моего скрипта все нужные модули подтягивались и компилировались самостоятельно ?

Аватара пользователя
TITANius
сержант
Сообщения: 197
Зарегистрирован: 2009-10-27 11:33:10

Re: [PERL] подсчёт процессов в UNIXе по категориям.

Непрочитанное сообщение TITANius » 2010-02-19 0:55:12

Прочитал про CPAN.
Написал скрипт с использованием модуля BSD::Process

Код: Выделить всё

#!/usr/bin/perl -w

use strict;
use Term::ANSIColor;
use BSD::Process;

        my @stat = (0,0,0,0,0,0,0);

        for my $p (BSD::Process::list) {
                my $proc = BSD::Process::info($p);
                $stat[$proc->{stat}-1]++;
        };
        my $sumary = $stat[0] + $stat[1] + $stat[2] + $stat[3] + $stat[4] + $stat[5] + $stat[6];
        my $format = "%-6s %8s %10s %10s %10s %9s %10s %10s\n";
        print "------------------------------ ", color("green"), "Process Information", color("reset")," -----------------------------\n\n";
        printf $format,"sumary","forked","runnable","sleeping","stopped","zombie","waiting","blocked";
        printf $format,$sumary,$stat[0],$stat[1],$stat[2],$stat[3],$stat[4],$stat[5],$stat[6];
        print "\n";

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PERL] подсчёт процессов в UNIXе по категориям.

Непрочитанное сообщение hizel » 2010-02-19 9:44:02

не забудьте что этот модуль только для BSD like system в слинупсах используется procfs
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.