Monitor de usuarios
Publicado por Carlos Carvalho 14/07/2004
[ Hits: 7.622 ]
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
Backup de algumas databases, Remotamente.
Gzipar arquivos com determinadas extensões
Descobre e bloqueia o IP de quem mais tem conexão no servidor
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Instalação Uefi com o instalador clássico do Mageia [RESOLVIDO] (2)
Melhorando a precisão de valores flutuantes em python[AJUDA] (11)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)