Monitor de usuarios
Publicado por Carlos Carvalho 14/07/2004
[ Hits: 7.885 ]
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
Instalação do Asterisk no Debian Etch
Cálculo de área de cobertura de toner/tinta em uma impressão
ARS Vídeos - Cortador de vídeos e webcam shooter
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Apagar Todo o Histórico do Terminal
Linux Mint: Zram + Swapfile em Btrfs
Pendrive do Ubuntu 24.04 travando ao tentar fazer a instalação dual bo... (4)
Instalar Dual Boot, Linux+Windows. (14)
queria saber de uma coisa sobre o steam e derivados (3)
tentei instalar o steam pelo terminal, agora ele não abre (3)









