Monitor de usuarios
Publicado por Carlos Carvalho 14/07/2004
[ Hits: 7.837 ]
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 :)
#!/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
[wgetreload] Evitando conexão "staled" (parada) no wget
ShadowBurn - grava, copia e apaga CD/DVD
Script em bash para compilação do kernel 3.3.2 para Ubuntu 11.10 com patch 3.3.0-ck1
Listar o número de arquivos de um diretório
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Ativando e usando "zoom" no ambiente Cinnamon
Vídeo Nostálgico de Instalação do Conectiva Linux 9
Como realizar um ataque de força bruta para desobrir senhas?
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (4)
Thinkpads são bons mesmo ?! (4)
existe algum hub de jogos online similiar ou igual dos browser (6)
Como botar o efeito de deslocar janelas (win + setas - windows) no lin... (0)









