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
| | |-+  Crear Monitor de recursos linux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear Monitor de recursos linux  (Leído 2,424 veces)
kiraastaroth

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Crear Monitor de recursos linux
« en: 28 Noviembre 2012, 07:31 am »

Monitor de Recursos

Mediante top o ps que se vaya graficando el uso de recursos por parte de algún proceso en específico mediante variaciones con caracterés.

Desarrollar una herramienta que monitoree la información de una o varias aplicaciones en ejecución y las muestre de manera gráfica (mediante puntos, asteriscos, o el caracter de su preferencia).

El script deberá permitir especificar las aplicaciones a monitorear mediante nombre de aplicación, usuario o PID (Process ID), así como permitir indicar múltiples aplicaciones, una sola o en caso de no indicarse monitorear todas ellas.

Así mismo, se debe contar con la capacidad de indicar que parámetro se espera mostrar: CPU, memoria, tiempo, estado del proceso.

Ola a todos tengo unas dudas con este problema... espero puedan ayudarme. Especialmente en la parte de mostrar la informacion individual de una aplicacion y su informacion grafica

este es el script que asta el momento llevo hecho... simplemente pasa los resultados mostrados por el comando top y los pasa a un .txt para poder busccar una aplicacion en especifico.
Código
  1. #!/bin/bash
  2.  
  3. echo "Ingrese el nombre de la aplicacion *Solo se repetira la accion 5 Veces*"
  4. read nombre
  5. echo "Espere..."
  6. top -b -n 5 > top.txt
  7. grep $nombre top.txt > nombre1.txt
  8. cat nombre1.txt | cut -c 42-43 > nombre11.txt
  9.  
  10. numero=`head -n 1 nombre11.txt`
  11. LIMITE=$numero
  12.  
  13. echo "El  Numero es  $numero "
  14. #LIMITE=10
  15. for ((a=1; a<= LIMITE ; a++))  # Doble paréntesis y "LIMITE" sin "$".
  16. do
  17. echo  -n "*" # -n = no añade salto de linea
  18. done
  19. echo
  20.  
  21. numero1=`tail -n 1  numero11.txt`
  22. LIMITE1=$numero1
  23. echo "El  Numero es  $numero "
  24. for ((a1=1; a1<= LIMITE1 ; a1++))  # Doble paréntesis y "LIMITE" sin "$".
  25. do
  26. echo  -n "*" # -n = no añade salto de linea
  27. done
  28. echo
  29.  

Espero puedan ayudarme. GRACIAS¡


« Última modificación: 28 Noviembre 2012, 09:57 am por EleKtro H@cker » En línea

-Myx-

Desconectado Desconectado

Mensajes: 39



Ver Perfil
Re: Crear Monitor de recursos linux
« Respuesta #1 en: 29 Noviembre 2012, 06:02 am »

Sonaba entretenido y dado que no es mi tarea me tome la libertad de hacerlo como se me ocurrió...y hasta acá llego :D

Quizás algún día descubra un buen gráfico para la medición.

Código
  1. #!/bin/sh
  2. PROCESS_LIST_FILE=`mktemp`
  3. PARSED_PROCESS_LIST_FILE=`mktemp`
  4. GRAPH_SIZE=10
  5.  
  6. trap control_c SIGINT
  7.  
  8. control_c(){
  9.    rm -vf $PROCESS_LIST_FILE
  10.    rm -vf $PARSED_PROCESS_LIST_FILE
  11.    echo 'Bye!'
  12.    exit 5
  13. }
  14.  
  15. f_watch_watcher(){
  16.    while [[ -d /proc/$optionB ]]; do
  17.        CURRENT_VALUE=`ps h -p $optionB -o $PS_STRING`
  18.        let "CURRENT_VALUE %= $GRAPH_SIZE"
  19.        CURRENT_VALUE=$((CURRENT_VALUE + 2))
  20.        clear
  21.        seq -s "+" $CURRENT_VALUE | sed 's/[0-9]//g'
  22.        sleep 1
  23.        clear
  24.    done
  25.    exit 4
  26. }
  27.  
  28. f_get_watch(){
  29.    select optionC in "CPU" "Memory" "CPU Time" "State"; do
  30.        case "$optionC" in
  31.            "CPU")PS_STRING='c';f_watch_watcher;;
  32.            *)echo -e '501 Not implemented\nGo away! '$optionC; exit 3;;
  33.        esac
  34.    done
  35. }
  36.  
  37. f_show_parsed(){
  38.    select optionB in `cat $PARSED_PROCESS_LIST_FILE` "Done"; do
  39.        case "$optionB" in
  40.            "Done")exit;;
  41.            *) f_get_watch; exit 2 ;;
  42.        esac
  43.    done
  44. }
  45.  
  46. f_select_pid(){
  47.    cat $PROCESS_LIST_FILE | cut -f1 -d' ' | tr ' ' '-' > $PARSED_PROCESS_LIST_FILE
  48.    f_show_parsed
  49. }
  50.  
  51. ps fh -o pid,user,comm \
  52.      -N --ppid 2 -p 1,2 \
  53.      | awk '$3 !~ /^[|\\]/ { print $1" "$2" "$3 }' > $PROCESS_LIST_FILE
  54.  
  55. select optionA in "PID - Process ID" "USER - User name" "COMM - Command"; do
  56.    case "$optionA" in
  57.        "PID - Process ID")f_select_pid;;
  58.        *)echo -e '501 Not implemented\nGo away! '$optionA; exit 1;;
  59.    esac
  60. done
  61.  
  62. control_c
  63.  


« Última modificación: 29 Noviembre 2012, 06:10 am por -Myx- » En línea

-Myx-

Desconectado Desconectado

Mensajes: 39



Ver Perfil
Re: Crear Monitor de recursos linux
« Respuesta #2 en: 5 Diciembre 2012, 20:18 pm »

Update: ahora acepta varios PID's y tiene un poco mas de color...espero no tener que volver a hacer esto...

Código
  1. #!/bin/sh
  2. PROCESS_LIST_FILE=`mktemp`
  3. PARSED_PROCESS_LIST_FILE=`mktemp`
  4. GRAPH_SIZE=10
  5. DOTS='****************************************************************************************************'
  6.  
  7. trap control_c SIGINT
  8.  
  9. control_c(){
  10.    rm -f $PROCESS_LIST_FILE
  11.    rm -f $PARSED_PROCESS_LIST_FILE
  12.    echo 'Bye!'
  13.    stty echo
  14.    tput cvvis
  15.    exit 5
  16. }
  17.  
  18. f_watch_watcher(){
  19.    tput clear
  20.    tput civis
  21.    stty -echo
  22.    while :; do
  23.        i=0
  24.        for pid in $PID_LIST; do
  25.            if [[ -d /proc/$pid ]]; then
  26.                tput cup $i 0
  27.                CURRENT_VALUE=`ps h -p $pid -o $PS_STRING`
  28.                echo -n "$DOTS" "$CURRENT_VALUE"
  29.                tput cup $i 0
  30.                ((CURRENT_VALUE++))
  31.                case $CURRENT_VALUE in
  32.                    [0-9]|[1-2][0-9]|3[1-3])color='\e[0;32m';;
  33.                    3[4-9]|[4-5][0-9]|6[0-6])color='\e[0;33m';;
  34.                    6[7-9]|[7-9][0-9]|100)color='\e[0;31m';;
  35.                esac
  36.                echo -ne $color
  37.                NOTDOT=`seq -s "+" $CURRENT_VALUE | sed 's/[0-9]//g'`
  38.                echo -en $NOTDOT'\e[0m'
  39.            else
  40.                tput cup $i 0
  41.                echo -n 'PID dead: '$pid
  42.            fi
  43.            ((i++))
  44.         done
  45.    done
  46.    exit 4
  47. }
  48.  
  49. f_what_watch(){
  50.    select optionC in "CPU" "Memory" "CPU Time" "State"; do
  51.        case "$optionC" in
  52.            "CPU")
  53.                PS_STRING='c'
  54.                break
  55.            ;;
  56.            *)
  57.                echo -e '501 Not implemented\nGo away!'
  58.                exit 5
  59.            ;;
  60.        esac
  61.    done
  62. }
  63.  
  64. f_get_pidlist(){
  65.    # TODO: Add warning if PID was selected before OR
  66.    #       Remove PID from list
  67.    select optionB in `cat $PARSED_PROCESS_LIST_FILE` "Done"; do
  68.        case $optionB in
  69.            "Done")
  70.                # Catch empty PID_LIST
  71.                [[ x"$PID_LIST" == 'x' ]] && echo 'You did not select any PID...' && control_c
  72.                break # Exits select loop
  73.            ;;
  74.            *)
  75.                # Catch first PID
  76.                if [[ x"$PID_LIST" == 'x' ]]; then
  77.                    PID_LIST=$optionB
  78.                else
  79.                    PID_LIST="$PID_LIST"' '"$optionB"
  80.                fi
  81.            ;;
  82.        esac
  83.    done
  84. }
  85.  
  86. f_select_pid(){
  87.    cat $PROCESS_LIST_FILE | cut -f1 -d' ' | tr ' ' '-' > $PARSED_PROCESS_LIST_FILE
  88. }
  89.  
  90. f_select_filter(){
  91.    select optionA in "PID - Process ID" "USER - User name" "COMM - Command"; do
  92.        case $optionA in
  93.            "PID - Process ID")
  94.                f_select_pid # Return $PARSED_PROCESS_LIST_FILE
  95.                break # This is for the select loop
  96.            ;;
  97.            "USER - User name"|"COMM - Command")
  98.                echo -e '501 Not implemented\nGo away! '$optionA
  99.                exit 3
  100.            ;;
  101.            *)
  102.                echo 'Error!'
  103.                exit 3
  104.            ;;
  105.        esac
  106.    done
  107. }
  108.  
  109. f_get_psfile(){
  110.    ps h -o pid,user,comm \
  111.      -N --ppid 2 -p 1,2 \
  112.      | column -t | tr -s ' ' | cut -f1,2,3 -d ' '> $PROCESS_LIST_FILE
  113. }
  114.  
  115. f_get_psfile    # Return $PROCESS_LIST_FILE
  116. f_select_filter # Return $PARSED_PROCESS_LIST_FILE
  117. f_get_pidlist   # Return $PID_LIST
  118. f_what_watch    # Return $PS_STRING
  119. f_watch_watcher # Shows nice graphs
  120.  
  121. control_c
  122.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como crear archivo de recursos con Iconos de 32 bits
Programación Visual Basic
LeandroA 5 2,289 Último mensaje 21 Agosto 2008, 22:54 pm
por krackwar
crear un jar que se ejecute en linux, o un como exec en linux « 1 2 »
Java
moyo18 13 10,276 Último mensaje 3 Mayo 2010, 18:38 pm
por moyo18
crear un .bat para compartir recursos por red local(lan)
Scripting
gasolnba16 1 5,556 Último mensaje 7 Diciembre 2010, 16:27 pm
por moikano→@
que linux me recomiendan ? (recursos pobres :( )
GNU/Linux
Zeta1337 4 2,576 Último mensaje 29 Noviembre 2014, 07:01 am
por Br1ant
Utilizar recursos graficos con PTY Linux C
Programación C/C++
mester 2 1,641 Último mensaje 27 Abril 2017, 15:53 pm
por mester
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines