How-To: Controlando servicios con Update-Rc.D


-- Descargar How-To: Controlando servicios con Update-Rc.D como PDF --


Los servicios en linux pueden ser controlados mediante el uso de los scripts en /etc/init.d/, sin embargo, durante el inicio, o bien en un cambio de runlevel, estos scripts son buscados en /etc/rcX.d/(X es el número del runlevel)

Cuando se instala un nuevo servicio en debian, por defecto este es habilitado. Si, por ejemplo, instalo apache2, éste es instalado y habilitado(y, por lo tanto, iniciado de ahora en más en cada booteo). Puede pasar que no haga falta que apache inicie automáticamente, tal vez lo usemos solamente para pruebas.

Esto se puede lograr manualmente, borrando cada uno de los enlaces simbólicos en cada una de las carpetas /etc/rcX.d/. Pero también se puede lograr mediante update-rc.d, el cual hace todo automáticamente, evitando además, los errores humanos :).

Si tomamos apache2 como ejemplo:

# ls -l /etc/rc?.d/*apache2

lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc0.d/K91apache2 -> ../init.d/apache2

lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc1.d/K91apache2 -> ../init.d/apache2

lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc2.d/S91apache2 -> ../init.d/apache2

lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc3.d/S91apache2 -> ../init.d/apache2

lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc4.d/S91apache2 -> ../init.d/apache2

lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc5.d/S91apache2 -> ../init.d/apache2

lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc6.d/K91apache2 -> ../init.d/apache2

Como pueden ver, en los runlevels 0, 1 y 6 hay una K(kill)al comienzo del enlace simbólico, mientras que en los runlevels 2, 3, 4 y 5, hay una S(start). On debian and ubuntu systems, runlevels are as follows:

0: Halt

1: single user mode

2-5: (Multiuser)

6: Reboot

Remover un servicio:

Para deshabilitar completamente un servicio, ejecuta el comando update-rc.d de la siguiente manera:

# update-rc.d -f apache2 remove

El flag -f sirve para forzar el borrado de los enlaces simbólicos. Algo importante a tener en cuenta, es que este comando solo deshabilita el servicio hasta la próxima vez que éste es actualizado. Para evitar que vuelva a habilitarse, luego de deshabilitarlo necesitarás ejecutar:
# update-rc.d apache2 stop 80 0 1 2 3 4 5 6 .

Agregar un servicio:

Si lo que queremos, es habilitar el servicio, es bastante simple:

# update-rc.d apache2 defaults

Adding system startup for /etc/init.d/apache2 …

/etc/rc0.d/K20apache2 -> ../init.d/apache2

/etc/rc1.d/K20apache2 -> ../init.d/apache2

/etc/rc6.d/K20apache2 -> ../init.d/apache2

/etc/rc2.d/S20apache2 -> ../init.d/apache2

/etc/rc3.d/S20apache2 -> ../init.d/apache2

/etc/rc4.d/S20apache2 -> ../init.d/apache2

/etc/rc5.d/S20apache2 -> ../init.d/apache2

Ahora bien, podemos querer modificar la prioridad por defecto. Qué significa esto? El número detrás de S o K, implica una prioridad y esto le da el orden en que se iniciará o detendrá. Si por alguna razón queremos cambiar esta prioridad, podemos usar:

# update-rc.d apache2 defaults 91

Si lo que queremos es dar distintas prioridades al start y al kill:

# update-rc.d apache2 defaults 20 80(donde el primer número marca la prioridad al start y el segundo al kill

Adding system startup for /etc/init.d/apache2 …

/etc/rc0.d/K80apache2 -> ../init.d/apache2

/etc/rc1.d/K80apache2 -> ../init.d/apache2

/etc/rc6.d/K80apache2 -> ../init.d/apache2

/etc/rc2.d/S20apache2 -> ../init.d/apache2

/etc/rc3.d/S20apache2 -> ../init.d/apache2

/etc/rc4.d/S20apache2 -> ../init.d/apache2

/etc/rc5.d/S20apache2 -> ../init.d/apache2

Personalizando runlevels

Finalmente, si solo quieres Start y Kill en específicos runlevels, esta es la manera de hacerlo. En el siguiente ejemplo configuramos apache2 para que inicie con prioridad 20 en los runlevels 2-5. A la vez configuramos para que muera con prioridad 80 en los runlevels 0, 1 y 6

# update-rc.d apache2 start 20 2 3 4 5 . stop 80 0 1 6 .

Adding system startup for /etc/init.d/apache2 …

/etc/rc0.d/K80apache2 -> ../init.d/apache2

/etc/rc1.d/K80apache2 -> ../init.d/apache2

/etc/rc6.d/K80apache2 -> ../init.d/apache2

/etc/rc2.d/S20apache2 -> ../init.d/apache2

/etc/rc3.d/S20apache2 -> ../init.d/apache2

/etc/rc4.d/S20apache2 -> ../init.d/apache2

/etc/rc5.d/S20apache2 -> ../init.d/apache2

DISCLAIMER: Esto es una traducción y adaptación de un artículo que he encontrado seguramente en la web en algún momento. Lamentablemente, lo guardé como una nota entonces y ahora no tengo el link original. Sepan disculpar. De cualquier manera, es una traducción, ya que el original estaba en inglés.

Espero les sirva, saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *