Gestion de arranque - init.d - automatizacion
A grandes rasgos:
Con la aplicación chkconfig ( y system-config-services si no recuerdo mal ) se centraliza/automatiza la gestión del arranque/parada de servicios como bien comentas.
Para hacer un script usable por chkconfig necesitas varias cosas:
Una cabecera que sea procesable por chkconfig & friends que le permita saber: Nombre a usar para ese servicio, descripción de ese servicio y en que inits debe levantarse/pararse y el número de orden en el que debe ser levantado/parado ( útil cuando necesitas que un servicio se levante después de haber levantado otro antes, por ejemplo, leventar mysql antes del servidor web y parar el servidor web antes que mysql ).
Aquí va un ejemplo de dicha cabecera ( esta la uso para poner el tomcat como servicio) lo copié vilmente de la web de tomcat:
#!/bin/sh
#
# Startup script for Tomcat Servlet Engine
#
# chkconfig: 345 99 01
# description: Tomcat Servlet Engine
# processname: tomcat
# pidfile: /usr/local/jakarta-tomcat/bin/tomcat.pid
#
Las líneas resaltadas ( chkconfig, description y processname ) son las que interesa informar para que chkconfig haga el trabajo de ubicar el script y los links en el arranque/parada de servicios correctamente.
chkconfig: 345 99 01
Indica a chkconfig que este script hay que definirlo para los runlevels 3,4 y 5. Que en el orden de arranque ( de 1 a 99 ) tendrá el valor 99, es decir, será de lo último en arrancar antes de dar sesión al usuario ( ojo que lo informado en el fichero /etc/rc.local se ejecutará después de intentar levantar el último servicio informado en el runlevel actual ) y que durante el cierre de ese runlevel ( por cambio de init, ya sea por shutdown, reboot o telinit ) será de lo primero en pararse ya que indicamos 01.
De esta manera tenemos que el tomcat será de lo último en arrancar y de lo primero en parar durante la subida/bajada/cambio de los runlevels 3,4 y 5.
Después tienes el cuerpo del script en sí, donde lo normal es crear procedimientos que paren/arranquen/consulten el/los demonio/s. De estos hay que informar obligatoriamente del start y stop ya que seran los llamados durante el proceso de arranque/parada.
Quedaría algo así:
start() {
echo "Arrancando procesos bla,bla"
arranque de los procesos
si OK RETVAL=0 sino RETVAL!=0
}
stop() {
echo "Parando procesos bla,bla"
parada de los procesos
si OK RETVAL=0 sino RETVAL!=0
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "Uso: $0 {start|stop}"
exit 1
esac
exit $RETVAL
El valor de RETVAL será lo que hará que se escriba [OK] ó [FALLÓ] según se devuelva el valor 0 u otro distinto de 0.
David




Comentarios recientes
hace 2 horas 49 mins
hace 4 horas 42 mins
hace 12 horas 23 mins
hace 12 horas 24 mins
hace 14 horas 27 mins
hace 19 horas 49 mins
hace 23 horas 34 mins
hace 1 día 1 hora
hace 1 día 13 horas
hace 1 día 13 horas