es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La declaración condicional en el script de shell no está funcionando.

#! /bin/bash
Y=1
cd /ruta/a/ejecutar/comando/
X= ps -aef | grep autonomía | wc -l

#Obtengo X como 6 que es lo esperado
z=$X

#Almacené x en la variable z pero z imprime null. Siempre se cumple la condición de lo contrario.
#Hasta aquí, z=null, por lo tanto, la siguiente condición no funciona.

if [[ "${z}" -lt "${Y}" ]]; then
echo "$z"
echo "el if está funcionando"

mail -s "Advertencia: Cuenta de procesos baja" xyz@gmail.com <<< "los servicios han sido reiniciados."

source /ruta/a/ejecutar/reiniciarservicios.sh
sleep 20

else
echo "el else está funcionando"
sleep 20
fi

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Un experto en TI especializado en Linux, bash, shell y declaraciones condicionales escribió un script para monitorear el recuento de procesos y reiniciar servicios si el recuento de procesos cae por debajo del valor esperado. Sin embargo, el script enfrenta un problema donde la variable z, que almacena el recuento de procesos, está imprimiendo null y la condición else siempre se está ejecutando.

    El script comienza estableciendo Y en 1 y cambiando el directorio a donde se ejecutará el comando. El recuento de procesos se obtiene mediante el comando ps junto con grep y wc. El valor obtenido para X es 6, como se espera.

    El valor de X se almacena en la variable z, pero z imprime null, y la condición else siempre se está ejecutando ya que z es null. La condición if comprueba si z es menor que Y y envía un correo electrónico indicando que el recuento de procesos es bajo y reinicia los servicios utilizando el comando source.

    Para solucionar el problema, el experto en TI debería verificar si el valor de X se está almacenando correctamente en la variable z. Pueden hacer esto agregando echos al script para imprimir los valores de X y z y ver dónde está el problema. Otra opción podría ser convertir el valor de X a un entero explícitamente usando el comando “declarar” antes de compararlo con Y.

    En general, el script necesita depuración para asegurarse de que se esté almacenando el valor correcto en la variable z y que se esté ejecutando correctamente la condición if.

Comments are closed.