Daemon: Libera CPU - Mata processos
Publicado por Fernando da Silva Pio 11/06/2007
[ Hits: 8.936 ]
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.
#!/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
Determinar o tempo de compilação de um programa
Script simples para pegar informações sobre placa de rede
Pegando IP sem saber qual interface está sendo usada
Baixando Fotos de Qualquer Câmera Digital
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
[Resolvido] Algo deu errado ao abrir seu perfil
Usando o VNSTAT para medir o seu consumo de internet
Habilitando clipboard manager no ambiente COSMIC
Problema com som no laptop (5)
Quando vocês pararam de testar distros? (11)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (2)









