Descrição
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.
[ Download:
monitora_CPU.sh ]
[
Enviar nova versão ]
[ 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
Lista usuários
Limpar conflito Dropbox
Arrumando tag de arquivos MP3
Shell Script para adicionar um usuário a todos os grupos do sistema
motorola speakerphone.
Comentários
[1] Comentário enviado por
vodooo em 13/06/2007 - 12:12h:
Gostei da idéia!!
Parabéns!