Monitor de usuarios
Publicado por Carlos Carvalho 14/07/2004
[ Hits: 7.620 ]
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
Encerrar sessão no terminal com tempo definido
Monitorar o funcionamento do FTP
Instalação do FreeRock GNOME unstable
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
É cada coisa que me aparece! - não é só 3% (1)
Alguma pessoa pode me ajudar com drriver Core i3 7020u (Debian 12)? (2)
Mikrotik não mostra bytes nem packtes (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código [RESOLVID... (4)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta