#4sysadmins

Inicio » GNU/Linux » Plantilla script de inicio SysV

Plantilla script de inicio SysV

Últimas Entradas

Follow #4sysadmins on WordPress.com

Seguramente lo pocas modificaciones que debamos de hacer sean obviamente en las variables y en la función “existe”. Quizás debamos de emplear otros patrones en el comando ps. La mejor forma de comprobarlo es iniciar una vez el servicio desde su binario y desde la consola ir probando los mejores patrones hasta que demos con aquel que nos devuelve el PID.

#!/bin/bash
#
# Script que nos permitirá iniciar, detener y comprobar el estado del servicio:
#
#           $ service  start
#
##################################################################
#
#       Autor: nebul4ck
#       Fecha: 02/08/2015
#       blog: http://wwww.nebul4ck.wordpress.com
#
##################################################################

# En este ejemplo vamos a utilizar kafka, una herramienta de colas de mensajes 
# utilizada en entornos Big Data. Esta herramienta se descarga en .tar.gz y se
# se descomprime en un directorio cualquiera. Cuando queremos iniciarla tenemos
# que hacer uso de su binario $KAFKA_HOME/bin/kafka.sh.

# / / VARIABLES / /
#
# El nombre del servicio se sustituye por el nuestro.
SERVICIO="kafka"
KAFKA_HOME="/opt/kafka"
KAFKA_CONF="$KAFKA_HOME/conf/kafka.properties"
BIN_START="$KAFKA_HOME/bin/kafka-server-start.sh"

# / / FUNCIONES / /
#
# ¿Existe el proceso en ejecución?
existe() {
        EXISTE="0"

# Quizás debamos de ajustar la búsqueda de ps para nuestro servicio

        LINE=`ps -ef |grep -v grep| grep java|grep -i "D$1"|wc -l`
        PID=`ps -ef |grep -v grep |grep java|grep -i "D$1"|awk '{printf $2}'`

        if [ "$LINE" -eq "1" ]
        then
                EXISTE="yes"
        else
                EXISTE="no"
        fi
}

# Muestra uso del script
uso() {
        echo -e "\n\tUse: service $SERVICIO {start|stop|restart|status}"
        exit 1
}

# / / INICIANDO SERVICIO / /
#
# Iniciar/Detener/Reiniciar el servicio
case "$1" in
start)
# Primero comprobamos de que no esté ya en ejecución:
        existe "$SERVICIO"

        if [ "$EXISTE" == yes ]
        then
                echo -e "Service $SERVICIO is running\t[  \e[91mFAILED\e[0m  ]\n"
        else
                echo -e "Starting $SERVICIO...\n"
# En nuestro ejemplo kafka necesita de un parámetro (su archivo de configuración). Otros
# muchos servicios también lo precisan, de lo contrario bastará con quitar esa parte.
                $BIN_START $KAFKA_CONF > /dev/null 2>&1&
                sleep 2
# Comprobamos si se ha iniciado bien.
                existe "$SERVICIO"
                if [ "$EXISTE" == yes ]
                then
                        echo -e "\t$SERVICIO Started\t[  \e[32mOK\e[0m  ]\n"
                else
                        echo -e "\t$SERVICIO Started\t[  \e[91mFAILED\e[0m  ]\n"
                fi
        fi
;;
stop)
        existe "$SERVICIO"

        if [ "$EXISTE" == yes ]
        then
                echo -e "Stopping $SERVICIO...\n"
# Matamos el proceso que ha sido localizado mediante la funcion "existe"
                kill $PID  > /dev/null 2>&1&
                sleep 2
                existe "$SERVICIO"
                if [ "$EXISTE" == yes ]
                then
                        echo -e "\t$SERVICIO Stopped\t[  \e[91mFAILED\e[0m  ]\n"
                else
                        echo -e "\t$SERVICIO Stopped\t[  \e[32mOK\e[0m  ]\n"
                fi
        else
                echo -e "$SERVICIO is not running\t[  \e[91mFAILED\e[0m  ]\n"
        fi
                 
;;
status)
        existe "$SERVICIO"

        if [ "$EXISTE" == yes ]
        then
                echo -e "$SERVICIO state is\t[  \e[32mRUNNING\e[0m  ]\n"
        else
                echo -e "$SERVICIO Node state is\t[  \e[91mSTOPPED\e[0m  ]\n "
        fi
;;
restart)
        $0 stop
        $0 start
;;
*)

        uso
;;
esac

 

Anuncios

Deja un comentario, Gracias!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: