On Thursday 29 October 2009 16:08:03 Arnau Bria wrote:
> Hola a tots,
>
> torno amb el Perl, una pregunta molt semblant a algo que ja vaig
> preguntar fa temps... i senzillet...
>
> vull saber si N processos estan corrent en una màquina, els N processos
> són diferents. La meva idea inicial (copiant altres scripts que ja
> tenia on N era un nombre petit) és obrir el llista de processos,
> recorre'l buscant els N processos i si el trobo poso una variable a 1
> però clar, una varible per cada procés:
>
> open (PS,"ps -ef|");
> while (<PS>){
> if (/proces/){
>       $proces=1;
> }
> [...] N vegades...

jo vaig fer això per a nagios (algo senzill però efectiu):

li passo las llista de processos que vull trobar i em mostra els que falten o 
en el seu defecte els que hi ha.
El pots modificar per agafar la llista d'un fitxer o mostrar les dues 
sortides.

#!/usr/bin/perl

use strict;
use warnings;

my @proc_li...@argv;
my @no_ok;

if (! $ARGV[0] ) {
        print "llista de processos buida\n";
        exit 2;
}

for my $proc (@proc_list) {
 my $cmd = `ps -ef | grep $proc | grep -v grep | grep -v $0| wc -l`;
 chomp $cmd;
#  print "\$cmd val -> $cmd despres d'executar $proc\n";

 if ($cmd eq 0) {
        push @no_ok, $proc;
 }
}

if (@no_ok) {
    print "Critical: Procesos no presents: ", @no_ok, "\n";
    exit 2;
}

print "OK: Tots el processos estan carregats en memòria: @proc_list\n";
exit 0;


azazelo
--
_______________________________________________
Comandob mailing list
[email protected]
http://lists.badopi.org/mailman/listinfo/comandob

Responder a