Monitor Process
Publicado por Leonardo Berbert Gomes (última atualização em 14/03/2012)
[ Hits: 4.516 ]
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; } }
Calculadora com Perl com menos de 10 linhas de código
Wallpapers aleatórios no Fluxbox
Diminuir ou aumentar o brilho de notebook
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
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta