Registrarse
Home
Foros
Miembros
Calendario
Normas
Ayuda

Foros de usuarios de openSUSE
Retroceder   ForoSUSE > Zona Técnica > Programación y Scripts > Scripts


Síguenos en Twitter Suscríbete a nuestras noticias Acompáñanos en Facebook

Respuesta
 
Herramientas Desplegado

scrip monitorear uso CPU [SOLUCIONADO]
  #1  
Antiguo 01-dic-2018, 00:09
Avatar de gechdell
gechdell gechdell está desconectado
Habitual
 
Fecha de Ingreso: 27-noviembre-2007
Ubicación: chilangolandia
Versión: 11.4
Mensajes: 203
Agradecimientos: 13
Agradecido 5 Veces en 5 Mensajes
Poder de Credibilidad: 12
gechdell está en el buen camino
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

Cita:
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

Cita:
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
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
__________________
estoy buscando a mi media naranja, pero mientras me hecho unas mandarinas¡¡¡¡¡¡¡¡¡¡¡¡

Última edición por gechdell; 05-dic-2018 a las 18:33 Razón: Cambiar etiqueta para lectura (SOLUCIONADO)
Responder Citando
  #2  
Antiguo 01-dic-2018, 10:23
Avatar de DiabloRojo
DiabloRojo DiabloRojo está desconectado
Super Moderador
 
Fecha de Ingreso: 19-marzo-2005
Ubicación: En un lugar del planeta Tierra
Versión: La ultima estable
Mensajes: 17.062
Agradecimientos: 642
Agradecido 2.729 Veces en 1.863 Mensajes
Poder de Credibilidad: 10
DiabloRojo llegará a ser famoso muy pronto
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
__________________
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

Última edición por DiabloRojo; 01-dic-2018 a las 10:26
Responder Citando
  #3  
Antiguo 03-dic-2018, 10:57
Avatar de xisco
xisco xisco está desconectado
Miembro FOROSuSE
 
Fecha de Ingreso: 23-marzo-2006
Ubicación: Sector Horchata
Versión: La ultima estable
Mensajes: 1.708
Agradecimientos: 29
Agradecido 166 Veces en 136 Mensajes
Poder de Credibilidad: 14
xisco está en el buen camino
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
Responder Citando
  #4  
Antiguo 03-dic-2018, 13:27
Avatar de victorhck
victorhck victorhck está desconectado
Moderador
 
Fecha de Ingreso: 08-abril-2010
Ubicación: /HOME
Versión: Tumbleweed y Leap + KDE
Mensajes: 3.681
Agradecimientos: 331
Agradecido 1.187 Veces en 767 Mensajes
Poder de Credibilidad: 12
victorhck está en el buen camino
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
Responder Citando
  #5  
Antiguo 03-dic-2018, 21:04
Avatar de gechdell
gechdell gechdell está desconectado
Habitual
 
Fecha de Ingreso: 27-noviembre-2007
Ubicación: chilangolandia
Versión: 11.4
Mensajes: 203
Agradecimientos: 13
Agradecido 5 Veces en 5 Mensajes
Poder de Credibilidad: 12
gechdell está en el buen camino
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

Cita:
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


Cita:
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¡¡¡¡¡¡¡¡¡¡¡¡
Responder Citando
  #6  
Antiguo 03-dic-2018, 23:16
Avatar de Cuoco
Cuoco Cuoco está desconectado
Habitual
 
Fecha de Ingreso: 11-septiembre-2017
Ubicación: Mendoza, Argentina
Versión: Tumbleweed
Mensajes: 114
Agradecimientos: 10
Agradecido 94 Veces en 68 Mensajes
Poder de Credibilidad: 2
Cuoco está en el buen camino
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.
Responder Citando
  #7  
Antiguo 04-dic-2018, 03:15
Avatar de gechdell
gechdell gechdell está desconectado
Habitual
 
Fecha de Ingreso: 27-noviembre-2007
Ubicación: chilangolandia
Versión: 11.4
Mensajes: 203
Agradecimientos: 13
Agradecido 5 Veces en 5 Mensajes
Poder de Credibilidad: 12
gechdell está en el buen camino
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
Tipo de Archivo: pdf cron.pdf (29,8 KB (Kilobytes), 2 visitas)
__________________
estoy buscando a mi media naranja, pero mientras me hecho unas mandarinas¡¡¡¡¡¡¡¡¡¡¡¡
Responder Citando
  #8  
Antiguo 04-dic-2018, 05:57
Avatar de Defton
Defton Defton está desconectado
Miembro Senior
 
Fecha de Ingreso: 03-abril-2007
Ubicación: Mexico/SanLuisPotosi
Versión: 42.1
Mensajes: 866
Agradecimientos: 7
Agradecido 157 Veces en 99 Mensajes
Poder de Credibilidad: 12
Defton está en el buen camino
Enviar un mensaje por MSN a Defton Enviar un mensaje por Skype™ a Defton
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
Responder Citando
  #9  
Antiguo 04-dic-2018, 19:06
Avatar de gechdell
gechdell gechdell está desconectado
Habitual
 
Fecha de Ingreso: 27-noviembre-2007
Ubicación: chilangolandia
Versión: 11.4
Mensajes: 203
Agradecimientos: 13
Agradecido 5 Veces en 5 Mensajes
Poder de Credibilidad: 12
gechdell está en el buen camino
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¡¡¡¡¡¡¡¡¡¡¡¡
Responder Citando
  #10  
Antiguo 05-dic-2018, 04:39
Avatar de Cuoco
Cuoco Cuoco está desconectado
Habitual
 
Fecha de Ingreso: 11-septiembre-2017
Ubicación: Mendoza, Argentina
Versión: Tumbleweed
Mensajes: 114
Agradecimientos: 10
Agradecido 94 Veces en 68 Mensajes
Poder de Credibilidad: 2
Cuoco está en el buen camino
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.
Responder Citando
Los Siguientes 3 Usuarios Han Dado las Gracias a Cuoco Por Este Mensaje:
DiabloRojo (05-dic-2018), gechdell (05-dic-2018), victorhck (05-dic-2018)
Respuesta

Marcadores


(0 miembros y 1 visitantes)
 
Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado

Ir al Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ATI Radeon HD 6770. Monitorear temperatura. gvcastellon Hardware 2 20-feb-2012 21:17
driver IT87, placas asus y controlar ventiladores [solucionado] soyasi Hardware 0 20-may-2011 14:02
monitorear temperatura annubis Hardware 3 04-may-2009 12:55
Como puedo poner un Scrip para Compiz-Fusion larva_pro Software 3 19-feb-2008 20:38
Monitorear la temperatura del disco duro con Ksensors juankarlos Hardware 4 01-jul-2006 20:27



Síguenos en Twitter Suscríbete a nuestras noticias Acompáñanos en Facebook


La franja horaria es GMT +2. Ahora son las 11:55.
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.

Esta página está bajo una licencia de Creative Commons, salvo que no se indique lo contrario.
Creative Commons License

Valid CSS!

Diseño por:Designed by: vbdesigns.devbdesigns.de 
Contáctenos - ForoSUSE - Archivo - Declaración de Privacidad - Arriba