Script para monitoramento de processos em execução no sistema
Publicado por Maurilio Alberone 22/07/2008
[ Hits: 20.023 ]
Homepage: www.peta5.com.br
Download monitora-processos.sh
Segue um script básico para monitoramento de processos executados em seu computador.
Pode ser usado para monitorar qualquer programa, apenas inserindo-os como parâmetro na execução do script, entre aspas e separados por espaço.
Cria um log com o resultado do monitoramento e envia um email caso o processo não seja encontrado em execução.
Uso no crontab de meu servidor sendo executado a cada 5 minutos e tem funcionado bem. Comentários e sugestões são bem vindas.
Maurilio - www.peta5.com.br
#!/bin/bash
#Criado por Maurilio Alberone em 30/06/2008 - maurilio@peta5.com.br
#Script para verificar se determinados processos estão em execução no seu servidor.
#Os processos a serem monitorados devem ser passados como parâmetro no momento de execução deste script, entre aspas e separados por espaço.
#Por exemplo:
#./monitora-processos.sh "apache2" "squid" "dhcpd"
#Verifica se o arquivo temporário existe e o remove.
if [ -e /tmp/processos.tmp ]; then
rm /tmp/processos.tmp
fi
#Cria os diretórios para armazenamento do log
mkdir /srv/processos/$(date +%Y)
mkdir /srv/processos/$(date +%Y)/$(date +%m)
#Executa para cada processo passado como parâmetro.
for i in "$@"; do
#Executa o comando ps para todos os usuários e filtra com o grep o processo monitorado, depois são executados filtros inversos para excluir
#aparições da execução do próprio grep e do nosso script. O resultado, se existir, é salvo em um arquivo temporário.
ps aux | grep "$i" | grep -v "grep" | grep -v "monitora-processos.sh" > /tmp/processos.tmp
#Calcula-se o número de linhas do arquivo criado acima e atribui esse valor à variável A.
A=$(wc -l /tmp/processos.tmp | awk '{print $1}')
#Se A é maior ou igual a 1 significa que o processo está em execução,
#então é salva uma linha contendo um OK para o processo monitorado naquele momento.
#Senão é salvo um ERRO no log e tembém é enviado um email para o administrador do sistema avisando do ocorrido.
if [ $A -ge 1 ]; then
echo -e "$i\tOK\t$(date +"%x\t%X")" >> /srv/processos/$(date +%Y)/$(date +%m)/$(date +%d).log
else
echo -e "$i\tERRO\t$(date +"%x\t%X")" >> /srv/processos/$(date +%Y)/$(date +%m)/$(date +%d).log
echo -e "\nPor algum motivo inesperado o processo $i não está sendo executado neste momento." | mutt -s "[ALERTA] Problemas com $i em $(date +"%x %X")" email@dominio.com.br -a /tmp/processos.tmp
fi
done
Reinicia todos os trabalhos de todas as filas CUPS
freeradius: radwho mostrando número de usuários
Regula o horário de uso do computador pelos filhos - Versão 2.0
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático
Como impedir exclusão de arquivos por outros usuários no (Linux)
Alguém executou um rm e quase mata a Pixar! (6)
Formas seguras de instalar Debian Sid (9)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (12)
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (5)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (6)









