elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  AWK - ayuda [Solucionado]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: AWK - ayuda [Solucionado]  (Leído 4,943 veces)
laucrisman

Desconectado Desconectado

Mensajes: 4


Ver Perfil
AWK - ayuda [Solucionado]
« 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
  1. for i in $(awk '{print $1}' listado_ps.txt | sort | uniq | grep -v UID); do
  2. echo Procesos ejecutados por $i& grep $i listado_ps.txt | wc -l


« Última modificación: 29 Mayo 2010, 02:20 am por Leo Gutiérrez. » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: AWK - ayuda
« Respuesta #1 en: 26 Mayo 2010, 02:39 am »

¿Qué comando utilizaste para construir el contenido del archivo de texto?

Es para hacer pruebas.


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
laucrisman

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: AWK - ayuda
« Respuesta #2 en: 26 Mayo 2010, 20:24 pm »

 :) ps aux >listado
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: AWK - ayuda
« Respuesta #3 en: 27 Mayo 2010, 00:52 am »

Prueba esto, me funciona bien:

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

Código:
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
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
laucrisman

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: AWK - ayuda
« Respuesta #4 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

En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: AWK - ayuda
« Respuesta #5 en: 29 Mayo 2010, 01:16 am »

Código
  1. #!/usr/bin/bash
  2. let mayor=`ps aux | grep -i "^$USERNAME" | wc -l`
  3. for usuario in $(ps aux | grep -vi "^root" | awk '{print $1}' | sort | uniq);
  4. do
  5. let procesos=`ps aux | grep -i "^$usuario" | awk '{print $1}' | awk -F "$usuario" '{SUM +=NF - 1} END {print SUM}'`
  6. if [ "$procesos" -gt "$mayor" ]
  7. then
  8. user="$usuario"
  9. let process="$procesos"
  10. fi
  11. done
  12. # Ya tengo el más grande.
  13. for usuario in $(ps aux | awk '{print $1}' | sort | uniq);
  14. do
  15. let procesos=`ps aux | grep -i "^$usuario" | awk '{print $1}' | awk -F "$usuario" '{SUM +=NF - 1} END {print SUM}'`
  16. if [ "$usuario" = "$user" ]
  17. then
  18. echo -e "\033[40m\033[31mUsuario : [${user}], procesos ${procesos}          \033[0m";
  19. else
  20. echo -e "Usuario : [${usuario}], procesos ${procesos}";
  21. fi
  22.  
  23.  
  24. done
  25.  
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
laucrisman

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: AWK - ayuda
« Respuesta #6 en: 29 Mayo 2010, 02:03 am »

Muchisima gracias Funciona perfecto!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con DNS (Solucionado)
Redes
Splendid 3 3,916 Último mensaje 6 Julio 2011, 17:06 pm
por Splendid
[Solucionado] Ayuda con preg_match()
PHP
satu 5 9,510 Último mensaje 20 Diciembre 2011, 13:41 pm
por peib0l
Ayuda con VB.net (SOLUCIONADO)
.NET (C#, VB.NET, ASP)
alexjoffre 5 3,348 Último mensaje 13 Enero 2012, 16:55 pm
por alexjoffre
Ayuda C++11 [SOLUCIONADO]
Programación C/C++
SARGE553413 3 1,853 Último mensaje 12 Noviembre 2013, 09:55 am
por SARGE553413
(Solucionado)Redondear en c++. Ayuda
Programación C/C++
theseniorman 2 2,433 Último mensaje 4 Junio 2014, 20:13 pm
por theseniorman
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines