19 de Febrero, 2006

Apaga que nos vamos

Menos mal que en los malos momentos siempre hay algo en lo que confiar, y en este caso el servidor que mueve blackshell es lo suficientemente rock solid como para que no le tenga que prestar atención.

El otro día arrancaba un Tomcat desde el cron(8) de un usuario sin privilegios (vía @reboot). Ante la pregunta de ¿y al apagar el sistema? Bueno, se supone que todos los servicios saben manejar un SIGTERM en condiciones (la señal que envía init(8) a los procesos cuando se acaba la fiesta).

Supongamos que nos encontramos con un servicio que mejor lo bajamos en condiciones, ¿cómo lo haríamos con el sistema de scripts RC de OpenBSD?

Recordemos que los servicios se arrancan añadiendo el código shell adecuado en /etc/rc.local (un ejemplo: arrancando MySQL). Pero ese código solo se ejecuta al poner la máquina en marcha (no hay posibilidad de pasar argumentos como start / stop que soportan otros sistemas).

Tenemos otro fichero RC para solucionar este problema: /etc/rc.shutdown. Este fichero es únicamente para código del administrador. Por ejemplo:

(...blah blah...)
#
# Your shell code goes here
#

/usr/sbin/apachectl stop
/usr/local/bin/mysqladmin -u root -h localhost --password=passwd shutdown

Detenemos el servidor web y el servidor de bases de datos. Lo único que hay que tener en cuenta, en este caso, es que la contraseña de root para MySQL podría ser leída por usuarios no autorizados, así que habrá que ajustar los permisos de lectura del fichero.

Es realmente fácil, pero apuesto a que en la práctica la mayoría de los administradores confían en una adecuada gestión de SIGTERM. Otra cuestión sería cuántos de esos administradores lo hacen conscientemente ;).

Anotación por Juan J. Martínez, clasificada en: openbsd.

Hay 1 comentario

Gravatar

Soy un inconsciente ;). Sin embargo habría que confiar en que todos los servicios sepan lo que es un SIGTERM.

por r0sk, en 2006-02-20 10:36:26

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: