Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: laucrisman en 26 Mayo 2010, 02:26 AM

Título: AWK - ayuda [Solucionado]
Publicado por: laucrisman en 26 Mayo 2010, 02:26 AM
Necesito obtener la Cantidad de procesos por usuario indicando en rojo el que más tiene. Si alguien me puede dar una mano desde ya muchas gracias.
Lo que pude hacer es imprimir la cantidad de procesos por usuario pero no se como comparar para saber cual es el que mas tiene
Código (bash) [Seleccionar]
for i in $(awk '{print $1}' listado_ps.txt | sort | uniq | grep -v UID); do
echo Procesos ejecutados por $i& grep $i listado_ps.txt | wc -l
Título: Re: AWK - ayuda
Publicado por: leogtz en 26 Mayo 2010, 02:39 AM
¿Qué comando utilizaste para construir el contenido del archivo de texto?

Es para hacer pruebas.
Título: Re: AWK - ayuda
Publicado por: laucrisman en 26 Mayo 2010, 20:24 PM
 :) ps aux >listado
Título: Re: AWK - ayuda
Publicado por: leogtz en 27 Mayo 2010, 00:52 AM
Prueba esto, me funciona bien:

Código (bash) [Seleccionar]
#!/usr/bin/bash
let mayor=`ps aux | grep -i "^$USERNAME" | wc -l`
for usuario in $(ps aux | awk '{print $1}' | sort | uniq);
do
let procesos=`ps aux | grep -i "^$usuario" | awk '{print $1}' | awk -F "$usuario" '{SUM +=NF - 1} END {print SUM}'`
echo -e "Usuario : [${usuario}], procesos ${procesos}";
if [ "$procesos" -gt "$mayor" ]
then
user="$usuario"
let process="$procesos"
fi
done
echo -e "El usuario con más procesos es : ${user}\nProcesos : $process";


Usuario : [108], procesos 1
Usuario : [111], procesos 2
Usuario : [avahi], procesos 2
Usuario : [daemon], procesos 1
Usuario : [dhcp], procesos 1
Usuario : [klog], procesos 1
Usuario : [leo], procesos 61
Usuario : [root], procesos 61
Usuario : [syslog], procesos 1
Usuario : [USER], procesos 1
El usuario con más procesos es : root
Procesos : 61
Título: Re: AWK - ayuda
Publicado por: laucrisman en 27 Mayo 2010, 14:55 PM
Muchas Gracias! funciona perfecto , lo que me faltaría saber es si si hay alguna manera en vez de que me muestre una linea con el usuario con mas procesos que en la lista donde figuran todos los usuarios y procesos el que mas tiene aparezca en otro color
Muchas Gracias
ubuntu@ubuntu:~/Desktop$ ./pruebaforo.txt
Usuario : [102], procesos 1
Usuario : [108], procesos 2
Usuario : [avahi], procesos 2
Usuario : [daemon], procesos 1
Usuario : [root], procesos 80
Usuario : [rtkit], procesos 1
Usuario : [syslog], procesos 1
Usuario : [ubuntu], procesos 56 ( esta linea en ROJO)
Usuario : [USER], procesos 1
El usuario con m�s procesos es : ubuntu
Procesos : 56

Título: Re: AWK - ayuda
Publicado por: leogtz en 29 Mayo 2010, 01:16 AM
Código (bash) [Seleccionar]
#!/usr/bin/bash
let mayor=`ps aux | grep -i "^$USERNAME" | wc -l`
for usuario in $(ps aux | grep -vi "^root" | awk '{print $1}' | sort | uniq);
do
let procesos=`ps aux | grep -i "^$usuario" | awk '{print $1}' | awk -F "$usuario" '{SUM +=NF - 1} END {print SUM}'`
if [ "$procesos" -gt "$mayor" ]
then
user="$usuario"
let process="$procesos"
fi
done
# Ya tengo el más grande.
for usuario in $(ps aux | awk '{print $1}' | sort | uniq);
do
let procesos=`ps aux | grep -i "^$usuario" | awk '{print $1}' | awk -F "$usuario" '{SUM +=NF - 1} END {print SUM}'`
if [ "$usuario" = "$user" ]
then
echo -e "\033[40m\033[31mUsuario : [${user}], procesos ${procesos}          \033[0m";
else
echo -e "Usuario : [${usuario}], procesos ${procesos}";
fi


done
Título: Re: AWK - ayuda
Publicado por: laucrisman en 29 Mayo 2010, 02:03 AM
Muchisima gracias Funciona perfecto!!