Página 1 de 2 12 ÚltimoÚltimo
Mostrando resultados del 1 al 10 de 11

Tema: scrip monitorear uso CPU [SOLUCIONADO]

Hybrid View

Mensaje Previo Mensaje Previo   Próximo Mensaje Próximo Mensaje
  1. #1
    Fecha de Ingreso
    27-noviembre-2007
    Ubicación
    chilangolandia
    Mensajes
    208
    Poder de Credibilidad
    12

    scrip monitorear uso CPU [SOLUCIONADO]

    amigos que tal en esta ocasión les pido de su ayuda por que estoy da y da de vueltas y no consigo solucionarlo

    tengo un script que lo unico que hace es monitorizar el uso del CPU es decir para ver que tanto se esta usando.

    el script es el siguiente

    Código PHP:
    #!/bin/bash

    fecha=$(date +%d-%m-%Y*%T)
    factor=10
    base
    =150
    #ejecuto top de manera estatica y con grep separo la lina de uso de %cpu y con AWK aislo unicamente el uso del cpu 
    x=$(top --n 1 grep %Cpu awk '{usage=$2} END {print usage}')
    echo 
    el porcetanje de uso del cpu es$x % >> /home/gechdell/Documentos/scripts/log.txt

    #multiplico el valor de %cpu por 10 para convertir un decimal a entero, pero aun conserva el .0
    y=$(echo "$x*$factor"|bc)
    echo 
    multiplicado es $y % >> /home/gechdell/Documentos/scripts/log.txt

    #quito el .0 para quedarme con un numero sin punto decimal
    z=${y/.*/}
    echo 
    sin decimales es $z >> /home/gechdell/Documentos/scripts/log.txt
    echo este $z es mayor que $base >> /home/gechdell/Documentos/scripts/log.txt

    #comparo el uso de CPU ya convertido a entero y sin punto decimal con mi base para saber si el uso del cpu es alto o no
    if [ $z -gt $base ];
    then
    echo el uso del cpu es alto $x %  a las $fecha >> /home/gechdell/Documentos/scripts/log.txt
    else
    echo 
    el uso del cpu es normal $x a las $fecha >> /home/gechdell/Documentos/scripts/log.txt
    fi 
    ahora si lo corro de manera manual es decir, con ./nombre este se ejecuta correctamente me crea mi archivo log.txt y me da la siguiente salida

    el porcetanje de uso del cpu es: 15.7 %
    multiplicado es 157.0
    sin decimales es 157
    este 157 es mayor que 150
    el uso del cpu es alto 15.7 % a las 30-11-2018*15:23:33
    ahora el detalle viene cuando agrego ese script a cron.
    cron se ejecuta y lanza el script sin problema, perooooooo resulta que se pierden los valores de las variables¡¡¡¡¡¡ solo se conserva el valor de la variable x¡¡¡¡¡¡¡ y por consiguiente me arroja esto en el archivo log.txt

    el porcetanje de uso del cpu es: 26,5 %
    multiplicado es
    sin decimales es
    este es mayor que 150
    el uso del cpu es normal 26,5 % a las 30-11-2018*15:24:01
    por lo mismo que se pierden los valores de las variables, al momento de hacer el if, este no hace la comparación correctamente, pues no tiene los 2 valores para hacerlo.

    he estado buscando mucho en internet y no encuentro nada al respecto, y mi pregunta es la misma.. por que al correrlo manual si respeta los valores de las variables, y al correcto en automatico los valores se pierden???

    mi archivo contrab es el siguiente

    Código:
    gechdell@linux-b1aw:~/Documentos/scripts> crontab -l
    # DO NOT EDIT THIS FILE - edit the master and reinstall.
    # (/tmp/crontab.uPEWbH installed on Fri Nov 30 15:29:57 2018)
    # (Cronie version 4.2)
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    
    @hourly         /home/gechdell/bin/copia.sh
    * * * * *       /home/gechdell/Documentos/scripts/cpu.sh

    ojala puedan ayudarme y orientarme con este pequeño problema.


    SALUDOS
    ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
    Última edición por gechdell; 05-dic-2018 a las 18:33 Razón: Cambiar etiqueta para lectura (SOLUCIONADO)
    estoy buscando a mi media naranja, pero mientras me hecho unas mandarinas¡¡¡¡¡¡¡¡¡¡¡¡

  2. #2
    Fecha de Ingreso
    19-marzo-2005
    Ubicación
    En un lugar del planeta Tierra
    Mensajes
    17.164
    Poder de Credibilidad
    10
    Prueba cambiar las variables x, y... por nombres como las otras. Otra posibilidad es que el comando echo deba ponerse comillas " a sus salidas

    echo "el porcetanje de uso del cpu es: $x %" >> /home/gechdell/Documentos/scripts/log.txt
    Última edición por DiabloRojo; 01-dic-2018 a las 10:26
    NORMAS A CUMPLIR EN LOS FOROS (Lectura obligatoria) Lo siento, no contesto privados sobre problemas con GNU/Linux.
    Síguenos en TWITTER y en FACEBOOK
    Código:
    Buscador de   Alojamiento      Alojamiento     Otros
     paquetes:    de imágenes:     de ficheros:    buscadores:
    Search        TinyPic          Ifile Wuala     Simple y Facil
    Webpinstant   Paste Suse       SendSpace       TextSnip  Cl1p

  3. #3
    Fecha de Ingreso
    27-noviembre-2007
    Ubicación
    chilangolandia
    Mensajes
    208
    Poder de Credibilidad
    12
    Cita Iniciado por DiabloRojo Ver Mensaje
    Prueba cambiar las variables x, y... por nombres como las otras. Otra posibilidad es que el comando echo deba ponerse comillas " a sus salidas

    echo "el porcetanje de uso del cpu es: $x %" >> /home/gechdell/Documentos/scripts/log.txt
    amigo intento lo que me indicas pero aun asi no se respeta los valores de las variables
    ahora tambien no solo es a la hora de imprimir en el archivo, sino que por ejemplo en el IF tampoco se respeta la condición pues las variables pierden su valor.

    Lo extraño es que por que la primera variable es decir la $x si la respeta pero las siguientes nomas no

    Igual tiene que ver con el usuario que se lanza el script de cron, si no pones nada creo que como root, prueba con otro usuario.

    Salu2
    ya lo lance como root y como usuario normal y nada hace lo mismo


    Hola!

    Suponemos que el script tiene permisos de ejecución (chmod +x)
    Yo he tenido problemas, porque al ejecutar un script en cron necesita las rutas absolutas a los archivos, pero veo que en tu caso ya está así.

    Yo en cron lo tengo de esta manera:

    */5 * * * * /bin/bash /home/vhck/scripts/script.sh

    pero supongo que añadiendo el path tal como lo tienes tu, serviría igual...

    no se me ocurre qué podría ser...
    si el script tiene permisos de ejecucion

    pero por que cuando se lanza de manera manual todo correcto, pero cuando lo hace cron nomas no funciona?????
    estoy buscando a mi media naranja, pero mientras me hecho unas mandarinas¡¡¡¡¡¡¡¡¡¡¡¡

  4. #4
    Fecha de Ingreso
    11-septiembre-2017
    Ubicación
    Mendoza, Argentina
    Mensajes
    120
    Poder de Credibilidad
    2
    Hola estimado, la verdad que hace mucho que no hago nada de scripts, pero recuerdo que algo raro me ocurrió con un script que le asigné a cron, lo resolví leyendo el man, no quiero mentir pero creo en el mismo daba un ejemplo de que había que declarar las variables desde el script de cron, el espacio de variables del mismo no es igual que el de bash, así cuando se lanza la tarea no perdía las variables.
    Saludos.

  5. #5
    Fecha de Ingreso
    27-noviembre-2007
    Ubicación
    chilangolandia
    Mensajes
    208
    Poder de Credibilidad
    12
    Cita Iniciado por Cuoco Ver Mensaje
    Hola estimado, la verdad que hace mucho que no hago nada de scripts, pero recuerdo que algo raro me ocurrió con un script que le asigné a cron, lo resolví leyendo el man, no quiero mentir pero creo en el mismo daba un ejemplo de que había que declarar las variables desde el script de cron, el espacio de variables del mismo no es igual que el de bash, así cuando se lanza la tarea no perdía las variables.
    Saludos.

    ya cheque el man de cron y no especifica nada sobre variables igual lo adjunto por si alguien ve algo que yo no
    Archivos Adjuntos Archivos Adjuntos
    • Tipo de Archivo: pdf cron.pdf (29,8 KB (Kilobytes), 2 visitas)
    estoy buscando a mi media naranja, pero mientras me hecho unas mandarinas¡¡¡¡¡¡¡¡¡¡¡¡

  6. #6
    Fecha de Ingreso
    23-marzo-2006
    Ubicación
    Sector Horchata
    Mensajes
    1.719
    Poder de Credibilidad
    14
    Igual tiene que ver con el usuario que se lanza el script de cron, si no pones nada creo que como root, prueba con otro usuario.

    Salu2

  7. #7
    Fecha de Ingreso
    08-abril-2010
    Ubicación
    /HOME
    Mensajes
    3.703
    Poder de Credibilidad
    12
    Hola!

    Suponemos que el script tiene permisos de ejecución (chmod +x)
    Yo he tenido problemas, porque al ejecutar un script en cron necesita las rutas absolutas a los archivos, pero veo que en tu caso ya está así.

    Yo en cron lo tengo de esta manera:

    */5 * * * * /bin/bash /home/vhck/scripts/script.sh

    pero supongo que añadiendo el path tal como lo tienes tu, serviría igual...

    no se me ocurre qué podría ser...
    Guía básica de openSUSE Leap para recién llegados a GNU/Linux.
    → Mi blog sobre openSUSE, GNU/Linux, software libre ...y de todo un poco: Victorhck in the free world
    → Me puedes seguir en: Mastodon - diaspora* - PixelFed

  8. #8
    Fecha de Ingreso
    03-abril-2007
    Ubicación
    Mexico/SanLuisPotosi
    Mensajes
    868
    Poder de Credibilidad
    12
    no me hagas mucho caso, pero creo que te falta algo así en el script de cron:

    Código:
     BASH_ENV="/root/.bashrc"
    segun esta paguina

    aunque en el ejemplo es para el usuario root y el archivo "~/.bashrc" pero creo que en opensuse se utiliza "/etc/profile". Pero no estoy muy seguro.
    Saludos.
    __________________________________________________

    Mi Blog:
    http://elblogdedarkspark.blogspot.mx/
    Canales de Youtube:
    http://www.youtube.com/user/DarkSpark2099
    http://www.youtube.com/user/defton En des-uso

  9. #9
    Fecha de Ingreso
    27-noviembre-2007
    Ubicación
    chilangolandia
    Mensajes
    208
    Poder de Credibilidad
    12
    Cita Iniciado por Defton Ver Mensaje
    no me hagas mucho caso, pero creo que te falta algo así en el script de cron:

    Código:
     BASH_ENV="/root/.bashrc"
    segun esta paguina

    aunque en el ejemplo es para el usuario root y el archivo "~/.bashrc" pero creo que en opensuse se utiliza "/etc/profile". Pero no estoy muy seguro.
    Saludos.
    ya lo intente pero tampoco
    estoy buscando a mi media naranja, pero mientras me hecho unas mandarinas¡¡¡¡¡¡¡¡¡¡¡¡

  10. #10
    Fecha de Ingreso
    11-septiembre-2017
    Ubicación
    Mendoza, Argentina
    Mensajes
    120
    Poder de Credibilidad
    2
    Hola estimado, creo que pude replicar el problema, al intentar ejecutar tu escript en la consola me arrojaba la misma salida en el log que la que te arroja desde cron.
    Ejecuté las instrucciones y variables y encontré la discrepancia en el comando bc y la salida del comando top.
    En mi pc tengo todo configurado para usar español, la salida del comando top te arroja un numero decimal utilizando coma "," y el comando bc no reconoce dicho formato de números decimales, espera en su lugar un punto "."
    Esto te arroja el primer error en la linea y=$(echo "$x*$factor"|bc) y eso arrastra los problemas más abajo.
    La solución que se me ocurrió fue formatear la salida de la variable x y cambiar coma por punto, eso terminó el comando correctamente.
    Lo que se me ocurre que puede estar pasando es una discrepancia de los locale utilizados, tu usuario tiene español y cron utiliza el de sistema (ingles), o a la inversa, eso es lo que cambia la salida del comando top para que use punto o coma, para expresar los valores decimales.
    Adjunto el script modificado para que lo pruebes.
    Código:
    #!/bin/bash
    
    fecha=$(date +%d-%m-%Y*%T)
    factor=10
    base=150
    #ejecuto top de manera estatica y con grep separo la lina de uso de %cpu y con AWK aislo unicamente el uso del cpu 
    q=$(top -b -n 1 | grep %Cpu | awk '{usage=$2} END {print usage}')
    #cambiamos la coma por el punto para que sea leido correctamente por el comando bc
    x=`echo $q | sed 's/,/./g'`
    echo el porcetanje de uso del cpu es: $x % >> /home/gechdell/Documentos/scripts/log.txt
    
    #multiplico el valor de %cpu por 10 para convertir un decimal a entero, pero aun conserva el .0
    y=$(echo "$x*$factor"|bc)
    echo multiplicado es $y % >> /home/gechdell/Documentos/scripts/log.txt
    
    #quito el .0 para quedarme con un numero sin punto decimal
    z=${y/.*/}
    echo sin decimales es $z >> /home/gechdell/Documentos/scripts/log.txt
    echo este $z es mayor que $base >> /home/gechdell/Documentos/scripts/log.txt
    
    #comparo el uso de CPU ya convertido a entero y sin punto decimal con mi base para saber si el uso del cpu es alto o no
    if [ $z -gt $base ];
    then
    echo el uso del cpu es alto $x %  a las $fecha >> /home/gechdell/Documentos/scripts/log.txt
    else
    echo el uso del cpu es normal $x % a las $fecha >> /home/gechdell/Documentos/scripts/log.txt
    fi
    Saludos.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Temas Similares

  1. ATI Radeon HD 6770. Monitorear temperatura.
    By gvcastellon in forum Hardware
    Respuestas: 2
    Último mensaje: 20-feb-2012, 21:17
  2. Respuestas: 0
    Último mensaje: 20-may-2011, 13:02
  3. monitorear temperatura
    By annubis in forum Hardware
    Respuestas: 3
    Último mensaje: 04-may-2009, 11:55
  4. Como puedo poner un Scrip para Compiz-Fusion
    By larva_pro in forum Software
    Respuestas: 3
    Último mensaje: 19-feb-2008, 20:38
  5. Respuestas: 4
    Último mensaje: 01-jul-2006, 19:27

Marcadores

Normas de Publicación

  • No puedes crear nuevos temas
  • No puedes responder mensajes
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •