Monitor de usuarios
Publicado por Carlos Carvalho 14/07/2004
[ Hits: 7.808 ]
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
copy - copiar para a área de transferência
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (0)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









