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
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
¿Qué comando utilizaste para construir el contenido del archivo de texto?
Es para hacer pruebas.
:) ps aux >listado
Prueba esto, me funciona bien:
#!/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
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
#!/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
Muchisima gracias Funciona perfecto!!