Daemon: Libera CPU - Mata processos
Publicado por Fernando da Silva Pio 11/06/2007
[ Hits: 8.754 ]
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
Script para fazer levantamento de Hardware e Software
Organização de pastas para trabalhos topográficos.
OPL Manager para Linux em SHELL
uniq.sed: Emulando o uniq com sed
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Aplicativo simples para gravar tela
Quebra de linha na data e hora no Linux Mint
Firefox não abre em usuário não administradores (0)
Sempre que vou baixar algum pacote acontece o erro dpkg (8)
tentando instalar em um notebook antigo o Linux LegacyOS_2023... [RESO... (8)