LinuxParty
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

-
Ubuntu
- Las discusiones de desarrollo de Ubuntu se trasladarán de IRC a Matrix
- Crear de un servidor NFS, como almacenamiento independiente con GlusterFS En Ubuntu
- 20 años de Ubuntu: Canonical lo celebra con el lanzamiento de 24.10, que es excepcional como siempre
- Ahora puedes actualizar Ubuntu 22.04 LTS a Ubuntu 24.04 LTS. Aquí te explicamos cómo
- El App Center de Ubuntu ahora finalmente admite la instalación de paquetes DEB locales
- Ubuntu 24.04 ahora se ejecuta en Nintendo Switch (no oficialmente)
- Las 10 mejores distribuciones de Linux basadas en Ubuntu
- Cómo recuperar, reparar y reinstalar el cargador Boot Loader de arranque GRUB en Ubuntu Linux
- Instalar Nvidia Driver en Ubuntu Linux (último controlador patentado)
- Disco de Recuperación NTFS de Windows desde Linux
- Tener tu propia nube con ownCloud3 con Nginx (LEMP) en Debian/Ubuntu
- Ejecutar Simple Groupware en Nginx (LEMP) en Debian Squeeze/Ubuntu 11.10
- Ejecutar Shopware Community Edition con Nginx en Debian Squeeze/Ubuntu 12.04
- Cosas que hacer después de instalar Ubuntu Linux
- 25 Comandos Básicos Útiles de APT-GET y APT-CACHE para la Gestión de Paquetes