Daemon: Libera CPU - Mata processos

Publicado por Fernando da Silva Pio 11/06/2007

[ Hits: 8.489 ]

Download monitora_CPU.sh




Esse daemon monitora a cada 60 segundos todos os processos e "mata" o que estiver consumindo CPU acima do valor definido no script.

Cada processo finalizado, é adicionado ao log que está em /var/log/nome_do_script.log as seguintes informações:

- Nome do processo finalizado
- PID
- Uso de CPU
- Usuário dono desse processo
- Data e hora em que foi finalizado

Esse script fiz correndo apenas para ganhar nota em um trabalho na faculdade, por isso fiquem a vontade para alterar.

  



Esconder código-fonte

#!/bin/bash
#
# ---------------------------------monitora_CPU.sh------------------------------------------------------+
# Monitora o consumo de CPU de cada pocesso. Finaliza o processo se o uso de CPU for
# maior que o uso definido na variável LIMITE_CPU.
#
# Um log dos processos finalizados será criado em /var/log/nome_do_script.log
#
# Execute-o em bg
# Desenvolvido por: Fernando Pio (fernando_pio@yahoo.com.br)
#--------------------------------------------------------------------------------------------------------------+
#
#Declarações Globais
SCRIPT=${0##*/}
ADMIN=$(whoami)
PS_TEMP=$(mktemp /tmp/ps_temp.XXXX)
LIMITE_CPU=80
#Verificação de Sanidade

#Script Principal
if [ $ADMIN = root ] ; then
   while ( true ) ; do
      ps -eo user,%cpu,pid,comm --no-headers > $PS_TEMP
      while read linha ; do
         CPU=$(echo "$linha" | cut -c10,11)
         if [ $CPU -gt $LIMITE_CPU ] ; then
            echo "Programa: $(echo "$linha" | cut -c21-)" >> /var/log/$SCRIPT.log
            echo "PID: $(echo "$linha" | cut -c14-19)" >> /var/log/$SCRIPT.log
            echo "Uso de CPU: $(echo "$linha" | cut -c10-13)%" >> /var/log/$SCRIPT.log
            echo "Usuário: $(echo "$linha" | cut -c1-9)" >> /var/log/$SCRIPT.log
            kill -9 $(echo "$linha" | cut -c14-19)
            if [ $? -eq 0 ] ; then
               echo -e "Finalizado em: $(date +'%d de %B de %Y as %H:%M:%S')\n" >> /var/log/$SCRIPT.log
               else
                  echo -e -n '\e[31;1mATENCAO: \e[m' >> /var/log/$SCRIPT.log
                  echo "Houve um erro e o programa nao pode ser finalizado!" >> /var/log/$SCRIPT.log
                  echo -e -n '\e[33;1mOcorrido em: \e[m' >> /var/log/$SCRIPT.log
                  echo -e "$(date +'%d de %B de %Y as %H:%M:%S')\n" >> /var/log/$SCRIPT.log
            fi
         fi
      done < $PS_TEMP
   sleep 60
   done
   else
      echo "O programa so pode ser executado pelo root!"
fi

Scripts recomendados

Acerta Hora do Sistema

plasinfo

Instalando webmin

Monitore seu pc com um comando fácil

Shell Script para adicionar um usuário a todos os grupos do sistema


  

Comentários
[1] Comentário enviado por vodooo em 13/06/2007 - 12:12h

Gostei da idéia!!

Parabéns!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts