Monitor Process
Publicado por Leonardo Berbert Gomes (última atualização em 14/03/2012)
[ Hits: 4.547 ]
Homepage: https://www.linkedin.com/in/leoberbert
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.
#!/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; } }
Testando a agilidade do sistema de arquivos
Verificação se utilizador existe ou não
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI