Check All Process
Publicado por Leonardo Berbert Gomes (última atualização em 13/11/2013)
[ Hits: 3.737 ]
Homepage: https://www.linkedin.com/in/leoberbert
Este script em Perl tem como finalidade realizar a monitoração de todos os processos cadastrados em um arquivo de configuração e a partir dele, será verificado se todos os processos e/ou serviços possuem ao menos 1 processo em execução. Caso seja verdade, será exibida a mensagem de "OK", caso negativo será exibida a mensagem "FAILED".
No anexo coloquei a saída do script, note que ele é muito interativo para monitoração.
Espero que ajude a todos.
[]'s leoberbert
#!/usr/bin/perl
# Created by Leonardo Berbert Gomes
# E-mail: leoberbert@uol.com.br
# Version: 1.0
# Date: 07-Oct-2013
# Description: Verifying that all system processes are running.
## Loading Config
open CONFIG, "/home/oracle/Config" or die $!;
while (my $line = <CONFIG>) {
chomp $line;
if ($line =~ /^#/) {next}
$process_all = $line;
$hash_process{"$process_all"}++;
}
close CONFIG;
system ("clear");
check_proc();
my $parse_currentdate = get_date();
my @t_date = $parse_currentdate =~ /([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/;
my $ncols = `tput cols`;
my @text = ('System Process Status Report','Process Status');
print "=" x $ncols; print "\n";
print " " x int(($ncols - length $text[0])/2),$text[0]; print "\n";
print "=" x $ncols; print "\n";
printf "%-10s: %4s-%02s-%02s - %02s:%02s:%02s\n",'DATE',$t_date[0],$t_date[1],$t_date[2],$t_date[3],$t_date[4],$t_date[5];
printf "%-10s: %05s\n",'HOSTNAME',$host;
printf "%-10s: %5s - %7s\n",'OS Version',$osname,$osrel;
print "=" x $ncols; print "\n";
print " " x int(($ncols - length $text[1])/2),$text[1]; print "\n";
print "=" x $ncols; print "\n";
print "-" x $ncols; print "\n";
sub get_date {
my ($opt) = shift;
my ($current_date);
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) {
if ($opt eq 1) {
$current_date = "$day$month $hour$min$sec";
return $current_date;
}
elsif ($opt eq 2) {
$current_date = "$day$month$year";
return $current_date;
}
elsif ($opt eq 3) {
$current_date = "$year$month$day";
return $current_date;
}
elsif ($opt eq 4) {
$day--;
$current_date = "$year$month$day";
return $current_date;
}
} else {
my $date = "$year$month$day$hour$min$sec";
return $date;
}
}
sub check_proc {
$host = `hostname`;
chomp($host);
$osname = `uname -s`;
$osrel = `uname -r`;
chomp($osname); chomp($osrel);
}
foreach my $key ( sort keys %hash_process) {
my $ps = `ps -ef \| grep \"$key\" \| grep -v \"grep" \| wc -l`;
chomp $ps;
if ($ps eq 1){
printf("Process: %-23.25s | Running: %4s | %4s Status: [OK]\n", $key, $ps);
} else {
printf("Process: %-23.25s | Running: %4s | %4s Status: [FAILED]\n", $key, $ps);
}
}
Papagaiando o XFCE com temas e recursos
WhatsApp com Chamadas no Linux via Waydroid
XFCE - quase um Gnome ou Plasma mas muito mais leve
LXQT - funcional para máquinas pererecas e usuários menos exigentes
Como cortar as partes de um vídeo com passagens de áudio em branco
Tiling automático no KDE Plasma
SNMP Scan no OCS Inventory só funciona com HTTPS corretamente configurado
GOG confirma suporte oficial ao sistema Linux: "o trabalho começo... (3)
Alguém tem que acabar com ANATEL!!! (0)









