Daemon: Libera CPU - Mata processos
Publicado por Fernando da Silva Pio 11/06/2007
[ Hits: 8.997 ]
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
Pegando IP sem saber qual interface está sendo usada
Atualiza núcleo do sistema para Kernel 4.4 (Ubuntu)
organização_topografia quarto arquivo
Extrair ID de jogos de PS1 e PS2
Maquina modesta - a vez dos navegadores ferrarem o usuario
Fscrypt: protegendo arquivos do seu usuário sem a lentidão padrão de criptograr o disco
Faça suas próprias atualizações de pacotes/programas no Void Linux e torne-se um Contribuidor
Configurando o Cairo Dock individualmente em ambientes diferentes na mesma maquina
Calculadoras online gratuitas para o dia a dia do usuário Linux
Utilizando a Ferramenta xcheckrestart no Void Linux
Pisando no acelerador do Linux Mint: Kernel XanMod, zRAM e Ajustes de Swap
Como instalar Warsaw no Gentoo? (9)
Isso acontece quando tento ajudar alguém (0)
Governo da França vai trocar Windows por Linux (4)









