Monitor Process
Publicado por Leonardo Berbert Gomes (última atualização em 14/03/2012)
[ Hits: 4.420 ]
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; } }
Diminuir ou aumentar o brilho de notebook
Agora temos uma assistente virtual no fórum!!! (247)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
Reset do linux sem perder dual boot (4)
erro ao clonar repo github (10)
iso de sistema 32 bit em atividade (16)
Impressora Canon Ip 1800 (Drivers) 64 bit (3)
Como transfiro os pokemons do fire red para o emulador mupen64? (1)