Monitor Process
Publicado por Leonardo Berbert Gomes (última atualização em 14/03/2012)
[ Hits: 4.788 ]
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;
}
}
Remover lista de pacotes do Portage
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (1)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









