Monitor Process
Publicado por Leonardo Berbert Gomes (última atualização em 14/03/2012)
[ Hits: 4.854 ]
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;
}
}
Índice (Logaritmo Discreto) em Perl
Remover lista de pacotes do Portage
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Upscaling com imagem cortada no monitor secundário ao usar iGPU Multi ... (1)
Fiz uma pergunta no fórum mas não consigo localizar (13)
Quais os códigos mais dificeis que vcs sabem fazer? (2)
Não consigo instalar distro antiga no virtualbox nem direto no hd (7)
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... [RES... (8)









