Monitor Process

Publicado por Leonardo Berbert Gomes (última atualização em 14/03/2012)

[ Hits: 4.402 ]

Homepage: https://www.linkedin.com/in/leoberbert

Download Monitor.pl




Este script tem como finalidade monitorar processos e caso este não esteja em execução ele realizará o start do mesmo e também irá registrar num arquivo de Log. Neste script usei o apache como referência, porém, poderão ser monitorados quais e quantos processos forem necessários.

Espero que possa ajudar a todos.

  



Esconder código-fonte

#!/usr/bin/perl
# Created by Leonardo Berbert Gomes
# E-mail: leoberbert@uol.com.br
# Date: Mar 13 2012
# Version: 1.00
# Description: Monitor Process

use Time::Local;
use File::Basename;
use Sys::Hostname;
use strict;

#Altere para o processo que será monitorado

my @process = ('apache');
my $hostname = hostname();
my $scriptname = basename($0);

my ($da_sec,$da_min,$da_hour,$da_mday,$da_mon,$da_year,$da_wday,$da_yday,$da_isdst) = localtime();

$da_year += 1900;
$da_mon++;

if ( $da_mday < 10 )
{
        $da_mday = 0 . $da_mday;
}
if ( $da_mon < 10 )
{
        $da_mon = 0 . $da_mon;
}

## Altere para o local onde o log deverá ser redirecionado

my $out_file="/home/user/file_" . $da_year . $da_mon . $da_mday . ".log";

foreach my $service (@process) {

my $status = `/bin/ps cax | /bin/grep $service`;

## Acrescente o hostname que será monitorado ##
if (!$status && $hostname =~/killer/) {

open(OUT,">>$out_file") or die "Can't open $out_file: $!";

printf OUT ( "%-12.12s" . ":" . get_date(1) . ":P:Process is not running\n", $scriptname);
printf OUT ( "%-12.12s" . ":" . get_date(1) . ":1:Starting Process\n", $scriptname);
#Comando para o start do processo em questão
`apachectl start`;
printf OUT ( "%-12.12s" . ":" . get_date(1) . ":I:Process successfully started\n", $scriptname);
close OUT;
}
}


sub get_date {

        my $opt = shift;

        my ($sec,$min,$hour,$day,$month,$year) = (localtime(time))[0,1,2,3,4,5]; $month +=1;$year +=1900;

        if ($day =~ /^\d$/) { $day = "0" . $day;}
        if ($min =~ /^\d$/) { $min = "0" . $min;}
        if ($sec =~ /^\d$/) { $sec = "0" . $sec;}
        if ($hour =~ /^\d$/) { $hour = "0" . $hour;}
        if ($month =~ /^\d$/) { $month = "0" . $month;}

        if ($opt) {

            my $current_date = "$day$month $hour$min$sec";
            return $current_date;

        } else {

             my $date = "$year$month$day$hour$min$sec";
             return $date;

        }
}

Scripts recomendados

Testando a agilidade do sistema de arquivos

Remover lista de pacotes do Portage

Login AUDIT

FileSystem Alert

Índice (Logaritmo Discreto) em Perl


  

Comentários
[1] Comentário enviado por paccelli em 21/03/2012 - 10:26h

Amigo, gostaria de saber se posso iniciar um php em linha de comando com este script? exemplo: php -q /var/www/servico.php

[2] Comentário enviado por leoberbert em 21/03/2012 - 11:30h

Olá amigo,

Não conheço de PHP, logo, peço que poste no forum para que alguém que seja conhecedor possa te ajudar.

[]'s


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts