LinuxParty

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

ACTUALIZACIÓN 23 de Julio de 2018, (15ª revisión).

Uno de las cosas a las que muchas veces no se presta atención es a la carga de trabajo, no sólo de los servidores, también de los equipos domésticos, los ordenadores de nuestra casa, incluso al móvil, pero bueno... LinuxParty no habla de móviles, sino se llamaría "AndroidParty", y no... por ahora va a ser que no...

El script funciona con el comando uptime, y puede variar el número de campos en función de la versión de la distribución Linux, y sobre todo, cuanto tiempo lleve encendido el ordenador/servidor, Algunas versiones de uptime devuelven 12 campos (al incluir el día de la semanaa y el día del mes) y otros, como el que mostramos en el ejemplo 10 campos, cada campo separado por un espacio. En función del número de campos, deberás modificar el script.

Para facilitarte esta tarea, hemos desarrollado dentro del script unas sentencias que cuenta las palabras de una oración, que para el comando "awk", son campos que extraer de la variable donde se guarden las palabras para contarlas, y solucionamos, automatizando el problema anterior.

  campo1  c2   c3   c4   c5      c6  campo7   c8    c9   campo10  
08:20:09 up 15:56, 2 users, load average: 2,82, 2,00, 1,28

El motor del script es el comando "uptime" que según indica la propia ayuda de uptime "El método preciso del cálculo del promedio de carga varía un poco entre sistemas. Algunos sistemas lo calculan como el número promedio de procesos ejecutables en los últimos 1, 5 y 15 minutos (que son las 3 columnas), pero algunos otros sistemas también incluyen los procesos en el estado de suspensión ininterrumpible (es decir, aquellos procesos que están esperando E/S del disco). El kernel de Linux incluye procesos ininterrumpibles.

El script sólo es a título orientativo y sólo sirve para enseñar la programación de scripts y las características de Linux, que también funcionan con FreeBSD, y debe adaptarlo a sus propias necesidades, así como leer la documentación de su proveedor del hardware con respecto a uptime y el hardware que le proporciona, así como la de su propia distribución Linux, Unix o FreeBSD

#!/bin/bash
###################################################################################
# Script para comprobar la carga de trabajo de forma "colorida"
# (c) Javier Orovengua Miguel, para ExtreHost.com y Linux-party.com
# El script se puede compartir bajo los términos de la licencia GPL
# y modificar, respetando el autor y estos créditos de inicio.
# Versión del Script 1.15
####################################################################################

# Definimos colores, sólo por diversión
rojo='\033[0;31m'
rojoI='\033[1;31m'
rosaI="\033[1;35m"
amarillo='\033[1;33m'
cian='\033[1;36m'
azul='\033[0;34m'
verde='\033[1;32m'
destaca='\033[1;38m'
NC='\033[0m' # No Color

printf ${NC}
clear

# ********** Método antiguo desactualizado ***************
# Uptime puede medir diferente si se acaba de arrancar el
# ordenador / servidor, que si lleva un día funcionando,
# como por ejemplo (acaba de arrancar):
# 08:20:09 up 15:56,  2 users,  load average: 2,82, 2,00, 1,28
# o por ejemplo, basta un día funcionando:
#  18:45:27 up 1 day,  6:37,  2 users,  load average: 2,03, 1,73, 1,66
# Para el primer caso, mide 60 caracteres, para el segundo, más.
# MideUptime=`uptime`
# CuantoMide=`echo ${#MideUptime}`

# Método actual, contamos los campos que tiene
CuantosCampos=`uptime`
set -- $CuantosCampos
CuantoMide=`echo $#`


if [ "$1" == "--ahora" -o "$1" == "-ahora" ] ; then
	date +%H:%M:%S
	exit 0
fi

printf "${amarillo}";
echo "Cuanto Mide: $CuantoMide"
printf ${NC}


# dentro de un ciclo sin condiciones se ejecuta el script
echo "Interrumpa con Ctrl+C, 2 seugndos comprobación"
while :                                                                                  
do
	Color1='\033[0m' # No Color
	Color2='\033[0m' # No Color
	Color3='\033[0m' # No Color

	# Extraemos los 3 últimos campos de "uptime" y le quitamos 
	# a los dos primeros la última coma (Primero y Segundo)

    if [ $( echo "$CuantoMide <= 10" | bc ) -eq 1 ] ; then
        # echo "Opción <=10"
        Primero=`uptime | awk '{print $8}' | sed -e s/','/'.'/g -e 's/.$//'`
        Segundo=`uptime | awk '{print $9}' | sed -e s/','/'.'/g -e 's/.$//'` 
        Tercero=`uptime | awk '{print $10}' | sed s/','/'.'/g`
    fi

    if [ $( echo "$CuantoMide >= 11 && $CuantoMide < 12" | bc ) -eq 1 ] ; then
	# echo "Opción >=11 y < 12"
	Primero=`uptime | awk '{print $9}' | sed -e s/','/'.'/g -e 's/.$//'`
	Segundo=`uptime | awk '{print $10}' | sed -e s/','/'.'/g -e 's/.$//'` 
	Tercero=`uptime | awk '{print $11}' | sed s/','/'.'/g`
    fi
	  
    if [ $( echo "$CuantoMide >= 12 && $CuantoMide < 13" | bc ) -eq 1 ] ; then
	# echo "Opción >=12 y < 13"
	Primero=`uptime | awk '{print $10}' | sed -e s/','/'.'/g -e 's/.$//'`
	Segundo=`uptime | awk '{print $11}' | sed -e s/','/'.'/g -e 's/.$//'` 
	Tercero=`uptime | awk '{print $12}' | sed s/','/'.'/g`
    fi
	
    if [ $( echo "$CuantoMide >= 13" | bc ) -eq 1 ] ; then
	# echo "Opción >=13"
	Primero=`uptime | awk '{print $11}' | sed -e s/','/'.'/g -e 's/.$//'`
	Segundo=`uptime | awk '{print $12}' | sed -e s/','/'.'/g -e 's/.$//'`
	Tercero=`uptime | awk '{print $13}' | sed s/','/'.'/g`
    fi

  
    if [ $( echo "$Tercero > $Segundo" | bc ) -eq 1 ] ; then Color3=$NC ; fi
    if [ $( echo "$Segundo > $Tercero" | bc ) -eq 1 ] ; then Color2=$rosaI ; Color3=$rojoI ; fi
    if [ $( echo "$Primero > $Segundo" | bc ) -eq 1 ] ; then Color1=$amarillo ; fi
    if [ $( echo "$Segundo > $Primero" | bc ) -eq 1 ] ; then Color1=$NC ; fi
    
# Mostramos printf "${NC}" # Extraemos la hora. Hora=$(date +%H:%M:%S) echo -n "Carga Trabajo ($Hora): " printf "${Color1}" echo -n "|| $Primero || " printf "${Color2}" echo -n "$Segundo || " printf "${Color3}" echo "$Tercero ||" # Restauramos colores Color1=$NC Color2=$NC Color3=$NC printf ${NC} sleep 2 done

Puedes editar el script y utilizarlo para tus propios propósitos.

Algunas características que podrían ser mejoradas:

Puedes meter las sentencias:

	 let "PalEstado=PalEstado+1"
	 if [ $( echo "$PalEstado >= 10" | bc ) -eq 1 ] ; then
		 /usr/local/bin/estado.sh
		 let "PalEstado=0"
	 fi

Dentro del bucle While, do ... done, para que llame al script que comprueba el estado, que escribimos en este artículo.

Script para comprobar el Estado General del Ordenador / Servidor.

También, puedes meter las sentencias "CuantosCampos y CuantoMide" dentro del bucle, y también dentro de las sentencias "if ... fi" (para no restar ciclos al ordenador) y así detectaría automáticamente y se adaptaría, cuando uptime cambie por estar un día completo encendido.

	 let "PalEstado=PalEstado+1"
	 if [ $( echo "$PalEstado >= 10" | bc ) -eq 1 ] ; then
		 /usr/local/bin/estado.sh
		 let "PalEstado=0"

CuantosCampos=
`uptime` set -- $CuantosCampos CuantoMide=`echo $#` fi
Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política