Daemon: Libera CPU - Mata processos

Publicado por Fernando da Silva Pio 11/06/2007

[ Hits: 8.473 ]

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

Alterando Ubuntu de UTF-8 para ISO-8859-1 (LATIN1)

Alimente seu arquivo de bloqueio e liberação no Squid

Converter arquivo bibtex para texto formatado e vice-versa

script_otimizar_limpeza_Linux_Mint_18-3.sh

Organização de pastas para trabalhos topográficos.


  

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