Monitor de usuarios
Publicado por Carlos Carvalho 14/07/2004
[ Hits: 7.653 ]
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
Front-end utilizando o Xdialog para o comando whereis
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
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
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Olá quais distribuições recomendam para usar no dia a dia. (3)
minha maquina foi desinstalada o firefox eu preciso reinstalar tentei... (6)
Erro na inicialização do Arch Linux. (1)
windows 11 versao 24H2 não aplicando politicas samba4.21.1 GPO (4)