Monitor de usuarios

Publicado por Carlos Carvalho 14/07/2004

[ Hits: 7.538 ]

Download Monitor_Usuarios.sh




Esse script foi feito por mim ja a bastante tempo, ele monitora determinado usuario e seus processos por consumo de CPU, interessante tambem que uso nesse caso ARRAYS, o que eh
um pouco incomum em shell (pelo menos nao vi nenhum script que faca uso de arrays e matrizes por ai, se tiver algum quero ver tambem) . Esta parte esta comentada no codigo, explicando como eh e como funciona.

Hoje eu faria esse script bem mais simplificado e objetivo, mas haja paciencia :)

  



Esconder código-fonte

#!/bin/bash
#############################################
#############################################
#############################################
# Monitor_Usuarios.sh
# Script que verifica quantidade de
# usuarios no sistema e processos
# de maior consumo de cpu.
#
#
# Tue Jul  8 11:43:44 BRT 2003
#
# Carlos_lnx@ibest.com.br
#
##############################################
##############################################
##############################################
funcao ()
{
user="info15"
CACHE_KILL="/tmp/killcache.txt"
MAXIMO=2
N_MAXIMO=2
N_ATUAL=$(ps -u $user --no-heading |awk '{print $1}' |wc -l)
a=(y=$(ps aux --no-heading |grep $user |awk '{print $2}'))
b=(z=$(ps aux --no-heading |grep $user |awk '{print $3}' |cut -d "." -f1))

#Aqui temos um exemplo de uso de arrays em Shell, para quem nunca viu...
# $b1 recebe a array b[0] que eh a sequencia de uso de cpu via ps aux. O mesmo
# acontece com $a1, entao eh verificado o valor de cada item do arrey.
b1="${b[@]}" ; b2=$(echo $b1 |cut -d "=" -f2)
a1="${a[@]}" ; a2=$(echo $a1 |cut -d "=" -f2)
contador=0
for x in $b2 ; do
        if [ $x -ge $MAXIMO ] ; then
        echo
        echo "$user tem processo ocupando $x de cpu"
        echo "PID = ${a[$contador]}"
        echo "Devo matar este processo? [s/n]"
        read die
        if [ "$die" = "s" ] ; then
                #Aqui vai entrar a alteracao CACHE:
                echo "^%CD" > $CACHE_KILL
                echo "%SYS" >> $CACHE_KILL
                echo "^RESJOB" >> $CACHE_KILL
                echo "${a[$contador]}" >> $CACHE_KILL
                echo " " >> $CACHE_KILL
                echo "H" >> $CACHE_KILL
                echo " " >> $CACHE_KILL
                cache < $CACHE_KILL
                if [ $? = 0 ] ; then
                        echo "PID ${a[$contador]} killada"
                fi
        fi
        echo
        fi
contador=$(expr $contador + 1)
done
if [ $N_ATUAL -ge $N_MAXIMO ] ; then
echo "%%%%%%%%%%%%%%%%%%%%%% AVISO %%%%%%%%%%%%%%%%%%%%%%
Existem $N_ATUAL processos pertencentes a $user !
ultrapassando o limite de $N_MAXIMO por usuario
%%%%%%%%%%%%%%%%%%%%%% AVISO %%%%%%%%%%%%%%%%%%%%%%"
fi
}
funcao 2> /dev/null

Scripts recomendados

instalar-winex

OH MY ALIAS - Crie seu alias facilmente

Mantendo hora do servidor atualizada com NTP

Apagar arquivos recursivamente de um diretório pela extensão

Gerador de senhas fortes


  

Comentários
[1] Comentário enviado por albertguedes em 11/09/2006 - 16:44h

Legal, adoro perseguir usuarios abusados. ;)

[2] Comentário enviado por rfmano em 13/05/2008 - 20:02h

mudar a permissao do kode para modificar o codigo fonte seria uma boa escolha pois cada arquivo ja vem com um codigo fonte naum reajustavel..
While:{*}º
If while true

RF( ) /; retrum true

script/home/arquivo/diretorio/enquete do arquivo pagina fonte.
dir"/usr/X11R6/lib/X11/fonts/Type1"


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts