viernes, 15 de noviembre de 2013

Gestion de servicios/scripts de inicio en debian

A raiz de querer deshabilitar el servicio de dhcp de mi "servidor" casero me he puesto a revisar el uso del update-rc.d, pero resulta que tenia un comportamiento extraño.
Bucenado por la web encuentro que la gestion a partir de debian 6.0 se realiza mediante el comando insserv  . Ademas revisando la documentación los scripts de inicio (vamos los que ponemos en le /etc/init.d/) han cambiado para que sigan la definición LSB 3.1 (Linux standard Base). 

Ahora para habilitar un servicio tenemos lo haremos con el comando insserv:

Habilitando el servicio, dejara el servicio de forma default

# insserv <servicio> 

Deshabilitando/eliminado el servicio (elimina los links de /etc/rc*./):

# insserv -r <servicio> 

Para determinar los runlevels y el numero de orden que tiene que seguir esta en el script de inicio del servicio situado en el /etc/init.d/servicio ahora el archivo que añadamos aqui tiene que tener la siguiente cabecera:

### BEGIN INIT INFO
# Provides:          <servicio>
# Required-Start:    $remote_fs $network $syslog
# Required-Stop:     $remote_fs $network $syslog
# Should-Start:      $local_fs slapd $named
# Should-Stop:       $local_fs slapd
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Descripcion corta del servicio
# Description:       Descripcion del servicio
### END INIT INFO


Estos campos  indican lo siguiente:

### BEGIN INIT INFO -> Cabecera de inicio de la información del script de inicio
# Provides:          <servicio>  
-> Indica el servicio que se provee 

# Required-Start:    $remote_fs $network $syslog -> Servicios que tienen que estar arrancados antes de arrancar este servicio
# Required-Stop:     $remote_fs $network $syslog -> Servicios que tienen que estar arrancados antes de parar este servicio
# Should-Start:      $local_fs slapd $named ->(opcional) Servicios que si estan presentes tendrian que estar arrancados antes de arrancar este servicio 
# Should-Stop:       $local_fs slapd ->(opcional) Servicios que si estan presentes tendrian que estar arrancados antes de arrancar este servicio
# Default-Start:     2 3 4 5 -> Runlevels donde se arranca el servicio
# Default-Stop:      0 1 6 -> Runlevels donde se para el servicio
# Short-Description: Descripcion corta del servicio
# Description:       Descripcion del servicio
### END INIT INFO

Los servicios o "facilities" de los campos Require-start/stop y Should-start/stop son o nombres de servicios (por ejemplo sshd) del arranque o servicios definidos por el entandar LSB que vienen precedidos por $,  estos son los siguientes:

$local_fs     :todos los filesystems locales estan montadosall local file systems are mounted
$network      :el soporte de red esta disponible. basic networking support is available. Example: a server program could listen on a socket.
$named        :Els servicio de DNS esta disponible.
$portmap      :Los servicios que proveen SunRPC/ONCRPC portmapping estan arrancados
$remote_fs    :Los filesystems remotos estan montados.
$syslog       :el servicio de syslog esta arrancado
$time         :el reloj se ha puesto en hora
$all          :indica que se arranca despues de todos los demas servicios o que requiere todos los servicios para poder pararse

Con esto conseguiremos que el sistema arranque correctamente todos los servicios, sin tener que preocuparnos nosotros por crear los links simbolicos ni revisar el orden en que arranca o para un servicio, el con la definición que hemos realizado los creara en el orden correcto.

Espero que le sirva a alguien de ayuda.

Saludos y sed todo lo felices que podáis ser.

Quitos.

No hay comentarios: