Shell Script para verificar el estado del servicio
En este tutorial, explicaré un script de shell que verifica si el servicio se está ejecutando y, si no lo está, intentaré iniciarlo.
Es bueno que el administrador del sistema se asegure de que los servicios cruciales estén funcionando todo el tiempo.
Shell Script para verificar el estado del servicio
Este script verificará el estado de cualquier servicio init.d e iniciará ese servicio si no se está ejecutando.
#!/bin/bash if [ "$#" = 0 ] then echo "Usage $0 " exit 1 fi service=$1 is_running=`ps aux | grep -v grep| grep -v "$0" | grep $service| wc -l | awk '{print $1}'` if [ $is_running != "0" ] ; then echo "Service $service is running" else echo initd=`ls /etc/init.d/ | grep $service | wc -l | awk '{ print $1 }'` if [ $initd = "1" ]; then startup=`ls /etc/init.d/ | grep $service` echo -n "Found startap script /etc/init.d/${startup}. Start it? Y/n ? " read answer if [ $answer = "y" -o $answer = "Y" ]; then echo "Starting service..." /etc/init.d/${startup} start fi fi fi
Resultados
bobbin@linoxide:/$ ./service.sh apparmor Service apparmor is not running Found startap script /etc/init.d/apparmor. Start it? Y/n ? Y Starting service... * Starting AppArmor profiles [OK]
Aprenda este guión línea por línea
# verifique si el nombre del servicio pasó al script como argumento, si no hay argumentos (0), haga lo siguiente
si [ «$#» = 0 ]
entonces
«Usage $ 0» #escribir en el uso de la terminal
eco
# ya que no hay argumentos, necesitamos salir del script y el usuario volver a ejecutarlo
salida 1
fi
#obtener el nombre del servicio del primer argumento
servicio = $ 1
# esta verificación, si el servicio se ejecuta usando el comando ps, después de que eliminemos nuestro proceso de la salida, ya que el script también coincidirá, con wc contamos el número de líneas coincidentes.
is_running = `ps aux | grep -v grep | grep -v «$ 0» | grep $ servicio | wc -l | awk ‘{imprimir $ 1}’ `
#es el número de líneas no es 0 haz lo siguiente
si [ $is_running != «0» ] ;
entonces
#simplemente ponga esta línea en la terminal
echo «Service $ service se está ejecutando»
# si el número de precesos es 0
demás
#Service $ service no se está ejecutando «#solo ponga esta cadena en la terminal
eco
#comprobar archivos en /etc/init.d
(directorio con scripts de inicio) con nombre similar al servicio
initd = `ls /etc/init.d/ | grep $ servicio | wc -l | awk ‘{imprimir $ 1}’ `
# si hay un script con un nombre similar
si [ $initd = «1» ];
entonces
# esta línea obtiene el nombre del script de inicio (ls – enumera los archivos en el directorio
startup = `ls /etc/init.d/ | grep $ servicio`
echo -n «Se encontró el script de inicio /etc/init.d/${startup}. ¿Iniciarlo? ¿Y / n?»
# esperando la respuesta del usuario
leer la respuesta
#si responde S o y
si [ $answer = «y» -o $answer = «Y» ];
entonces
echo «Iniciando servicio …»
# ejecutando script de inicio
/etc/init.d/${startup} inicio
fi
# salida del bucle if
fi
# salida del bucle if
fi