Monitor de usuarios

Publicado por Carlos Carvalho 14/07/2004

[ Hits: 7.324 ]

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
#
# [email protected]
#
##############################################
##############################################
##############################################
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

Grave arquivos em pendrive sem sistema de arquivos

Adiciona imagens ao email

Script para Remover Ascentos em arquivos HTML

Conversor de logs do squid

Menu de saída para i3 (versão em Zenity)


  

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
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts