Check All Process
Publicado por Leonardo Berbert Gomes (última atualização em 13/11/2013)
[ Hits: 3.627 ]
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);
}
}
Tirando screenshots facilmente !
Calculadora com Perl com menos de 10 linhas de código
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
O programa assinador digital (1)
PIP3 - erro ao instalar módulo do mariadb para o Python (9)
É normal não gostar de KDE? (8)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









