miércoles, 30 de octubre de 2013

HOW TO: CREAR Y CONFIGURAR SCRIPT (START, STOP, RESTART) EN DEBIAN 6 PARA QUE SE EJECUTE AL INICIAR EL SISTEMA OPERATIVO.

Con estos breves pasos, configuraremos un script que ejecute las acciones de start, stop y restart del servicio y se ejecute al iniciar el sistema operativo:

1. Crear el script:
Según sea lo que necesiten, creen y prueben el shell script que desean que se ejecute al inicio del sistema operativo.
Acá dejo un ejemplo de un script para iniciar tomcat6. Mi instalación default para este ejemplo fue /var/lib/tomcat6 y con el Java 6 Runtime Enviroment en /var/lib/java/jdk1.6.0_05/.  Este script permitirá tanto como iniciar, detener y reiniciar el servicio de tomcat6 y también permitirá ejecutarlo cuando se inicie el servidor.
#!/bin/bash
### BEGIN INIT INFO
# Provides:          tomcat
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remore_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Script para iniciar tomcat al inicio del servidor
# Description:       framirez.ve@gmail.com - 25-NOV-2013
### END INIT INFO
export JRE_HOME=/var/lib/java/jdk1.6.0_05/jre/
        case $1 in
        start)
                sh /var/lib/tomcat6/bin/startup.sh start
                ;;
        stop)
                sh /var/lib/tomcat6/bin/shutdown.sh stop
                ;;

        restart)
                sh /opt/tomcat/bin/catalina.sh stop
                sh /var/lib/tomcat6/bin/shutdown.sh start
                ;;
        esac
        exit 0


2. Copiar el script a la ruta /etc/init.d/.  Dar privilegios de ejecución al script (por ejem: chmod +x /etc/init.d/tomcat).

Explicación del script:
Si se fijan el el encabezado del script, abajo de la 1ra linea #!/bin/bash observarán algunas lineas:
### BEGIN INIT INFO
# Provides:          tomcat
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remore_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Script para iniciar tomcat al inicio del servidor
# Description:       framirez.ve@gmail.com - 25-NOV-2013
### END INIT INFO

Esto se refiere a la funcionalidad de Linux Standard Base (LSB) o Linux Standard a través de sus LBS Tags:

"El objetivo de la LSB es desarrollar y promover un conjunto de estándares que aumentarán la compatibilidad entre las distribuciones de Linux y permitirán que los programas de aplicación puedan ser ejecutados en cualquier sistema que se adhiera a ella. Además, la LSB ayudará a coordinar esfuerzos tendentes a reclutar productores y proveedores de programas que creen productos originales para Linux o adaptaciones de productos existentes."  

En resumen: Si no quieres utilizar los "LSB Tags" en tu script, deberás desinstalar el paquete insserv (apr-get remove insserv) y el script quedaría como el que sigue:
#!/bin/bash
export JRE_HOME=/var/lib/java/jdk1.6.0_05/jre/
        case $1 in
        start)
                sh /var/lib/tomcat6/bin/startup.sh start
                ;;
        stop)
                sh /var/lib/tomcat6/bin/shutdown.sh stop
                ;;

        restart)
                sh /opt/tomcat/bin/catalina.sh stop
                sh /var/lib/tomcat6/bin/shutdown.sh start
                ;;
        esac
        exit 0

NOTA IMPORTANTE: Si desinstalas la funcionalidad de LSB Tags es muy probable que los scripts que ya tengas creados y funcionando de esta manera, en tu Sistema Operativo, dejen de funcionar.

3. Ejecutar el comando:
update-rc.d tomcat defaults 80

Este comando creará los enlaces correspondientes automatizando el proceso de creación y borrado de enlaces a los scripts de inicio, con en fin de iniciar/parar servicios.

La sentencia "defaults" indica que el script arrancará y se detendrá en los niveles por defecto.

La sentencia "80" indica la prioridad de inicio y parada del script.

4. Para finalizar, validamos la creación del script por medio de enlaces simbólicos (por ejemplo, ls -l /etc/rc2.d/):

ls -l /etc/rc2.d/
total 4
-rw-r--r-- 1 root root 677 mar 26  2012 README
lrwxrwxrwx 1 root root  31 oct 21 08:52 S01xe-linux-distribution -> ../init.d/xe-linux-distribution
lrwxrwxrwx 1 root root  17 oct 18 17:52 S14portmap -> ../init.d/portmap
lrwxrwxrwx 1 root root  20 oct 18 17:52 S15nfs-common -> ../init.d/nfs-common
lrwxrwxrwx 1 root root  17 oct 18 17:52 S17rsyslog -> ../init.d/rsyslog
lrwxrwxrwx 1 root root  14 oct 24 09:14 S17sudo -> ../init.d/sudo
lrwxrwxrwx 1 root root  17 oct 24 09:30 S18apache2 -> ../init.d/apache2
lrwxrwxrwx 1 root root  15 oct 24 09:30 S19acpid -> ../init.d/acpid
lrwxrwxrwx 1 root root  13 oct 24 09:30 S19atd -> ../init.d/atd
lrwxrwxrwx 1 root root  14 oct 24 09:30 S19cron -> ../init.d/cron
lrwxrwxrwx 1 root root  15 oct 24 09:30 S19mysql -> ../init.d/mysql
lrwxrwxrwx 1 root root  13 oct 24 09:30 S19ssh -> ../init.d/ssh
lrwxrwxrwx 1 root root  16 oct 25 11:26 S19tomcat -> ../init.d/tomcat

5. Para probar, reiniciamos el servidor y validamos que el servicio se haya iniciado en forma correcta (por ejemplo ps aux | grep tomcat):

ps aux | grep tomcat
root      1039  0.0  2.0 677068 41940 ?        Sl   Oct25   3:11 /var/lib/java/jdk1.6.0_05/jre//bin/java -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/var/lib/tomcat6/endorsed -classpath /var/lib/tomcat6/bin/bootstrap.jar -Dcatalina.base=/var/lib/tomcat6 -Dcatalina.home=/var/lib/tomcat6 -Djava.io.tmpdir=/var/lib/tomcat6/temp org.apache.catalina.startup.Bootstrap start start
root      9797  0.0  0.0   3320   804 pts/0    S+   11:12   0:00 grep tomcat


No hay comentarios:

Publicar un comentario