Monitor Process
Publicado por Leonardo Berbert Gomes (última atualização em 14/03/2012)
[ Hits: 4.684 ]
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; } }
Verificação se utilizador existe ou não
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Ajuda Pra Melhoria do NFTABLES. (7)
Zorin OS - Virtual Box não consigo abrir maquinas virtuais (4)
como instalar o steam no twiteros 2.0.2(arm) (5)