Script para monitoramento de processos em execução no sistema
Publicado por Maurilio Alberone 22/07/2008
[ Hits: 19.239 ]
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
Script para monitorar os 10 processos que mais consomem CPU e Memória
Teste compatativo entre discos e/ou partições
Sistema de Gestão de Protocolos em YAD
Criar Password no boot de uma DebianLive
Atenção a quem posta conteúdo de dicas, scripts e tal (1)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
erro ao clonar repo github (5)
Problema Envio email GLPI Versao 10.0.15 (1)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (25)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba