Script para monitoramento de processos em execução no sistema
Publicado por Maurilio Alberone 22/07/2008
[ Hits: 19.996 ]
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
Solicitar senha para abrir programa
Text User Interface (TUI) com whiptail
Criar servidor samba shell script
Reconhecendo controladora online
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
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Estou tentando ser legalista, mas tá complicado! (9)
espelhar monitores nao funciona (2)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (1)









