Monitor de usuarios
Publicado por Carlos Carvalho 14/07/2004
[ Hits: 7.765 ]
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
Gerenciador de arquivos youtube-dl
Data e Hora (Observatório Nacional) usando o "Lynx"
Download automático da 'Imagem do Dia' da NASA
Shell Script para instalação do software FTOOL
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Realizar overclock no Miyoo Mini (plus ou normal)
Otimização de memória para máquinas modestas
Dúvidas sobre a originalidade de conteúdos online (10)
Erro de interface de Rede no Virt Manager dentro Debian 13 KDE (12)
Monitoramento pfsense com zabbix (3)
Google Crhome não abre desde que eu atualizei pelo "program... (13)