De momento sólo hemos instalado y hecho un recuento de las herramientas de las que disponemos con este paquete software. El siguiente paso es crear un servicio que se inicie en el arranque del sistema y que sea monitorizado para garantizar su perfecto funcionamiento.
En el documento sobre superservers, puse como ejemplo que se quería ofertar un servicio FTP. Para explicar el funcionamiento de daemontools, seguiré con dicho ejemplo. Para aquellos que se incorporan ahora, lanzábamos un servicio de FTP mediante tcpserver con el siguiente mandato:
tcpserver -R -H -c25 -u root -g wheel -x /usr/local/etc/rules.ftp.cdb 0 ftp /usr/sbin/myftp -s -a
Para crear el servicio, vamos a crear un directorio que llamaremos servicio-ftp en /usr/local, por ejemplo. Dentro de ese servicio, crearemos un archivo llamado run que pertenezca a root y con permisos de ejecución para él. En ese archivo vamos a incluir el siguiente script:
#!/bin/sh
exec tcpserver -R -H -c25 -u root -g wheel -x /usr/local/etc/rules.ftp.cdb 0 ftp /usr/sbin/myftp -s -a
Este script será el que lance daemontools y que monitorizará a continuación. Pero daemontools permite además manejar archivos de registro independientemente de syslog utilizando el programa multilog que incluye el paquete. Para ello crearemos un directorio llamado log dentro del que creamos anteriormente. Dentro del directorio log creamos un archivo llamado run de la misma forma que hicimos antes. Dentro de ese archivo incluiremos el siguiente script:
#!/bin/sh
exec setuidgid logftp multilog t /var/log/ftp
Mediante este script, multilog realizará el logging en el directorio /var/log/ftp. Como puede observarse, se ha incluido otra de las herramientas de daemontools: setuidgid. Ahora los archivos log van a pertener al usuario logftp. Por ello, debe crearse este usuario y al crear el directorio /var/log/ftp cambiarse la propiedad del mismo a éste.
Ahora ya esta todo preparado para que daemontools lance nuestro servicio y lo monitorice. Para ello crearemos un enlace simbólico en /service de la siguiente forma:
shell# ln -s /usr/local/servicio-ftp /service
En pocos segundos nuestro servicio estará funcionando como podremos comprobar con la orden ps -x. Una posible salida sería la siguiente:
129 ?? 00:00.45 /bin/sh /usr/local/bin/svscanboot
135 ?? 00:00.46 readproctitle service errors: ......................................
139 ?? 00:00.46 supervise servicio-ftp
142 ?? 00:00.46 supervise log
Ahora que ya tenemos el servidor FTP lanzado, podemos hacer uso de los programas que incluye daemontools. Si quisiéramos parar el servicio, tan solo deberíamos escribir:
shell# svc -d /service/servicio-ftp
Y de forma análoga podríamos usar todas las opciones que admite svc para enviar señales a nuestro servicio.
Ahora podríamos modificar nuestro script de inicio usando softlimit para limitar los recursos que puede utilizar nuestro servicio. Por ejemplo, podríamos limitar el tamaño de los segmentos por proceso. El script de inicio modificado resultaría:
#!/bin/sh
exec softlimit -m 8000000 tcpserver -R -H -c25 -u root -g wheel -x /usr/local/etc/rules.ftp.cdb 0 ftp /usr/sbin/myftp -s -a
Este capítulo espero que haya servido como introducción a esta herramienta para comprender el potencial que tiene. Como siempre, para más información hay que dirigirse a la web del autor o al man.
NOTA: Las páginas del man no se incluyen con la distribución del programa, pero pueden encontrarse en
http://smarden/pape/djb∞.