Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Konqueror no orkut II
Por javanunes
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Fernando da Silva Pio em 11/06/2007    [ 4032 hits ]

Login: fpio, 4591 pontos

   


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
   Script Linux recomendado Lista usuários
   Script Linux recomendado Limpar conflito Dropbox
   Script Linux recomendado Arrumando tag de arquivos MP3
   Script Linux recomendado Shell Script para adicionar um usuário a todos os grupos do sistema
   Script Linux recomendado motorola speakerphone.

Comentários
[1] Comentário enviado por vodooo em 13/06/2007 - 12:12h:

Gostei da idéia!!

Parabéns!


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.