Daemon: Libera CPU - Mata processos
Publicado por Fernando da Silva Pio 11/06/2007
[ Hits: 8.601 ]
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
OPL Manager para Linux em SHELL
PKG Sync v1.0 - Utilitário para backup de pacotes deb baixados
Determinar o tempo de compilação de um programa
Calculo da Baskara em Shell Script (Super Comentado)
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta