daemontools-0.76

Introducción a daemontools

El paquete daemontools es un sustituto para inetd o xinetd. La razón principal para utilizarlo aquí es porque se recomienda usarlo con qmail y djbdns.

Información sobre el paquete

Instalación de daemontools

Instala daemontools ejecutando los siguientes comandos:

cd admin/daemontools-0.76 &&
patch -Np1 -i ../../daemontools-0.76-errno.patch &&
package/compile &&
cd package && 
sed 's|command|usr/sbin|' boot.inittab > boot.inittab~ &&
mv boot.inittab~ boot.inittab &&
cd ../command &&
sed -e 's|/command:/usr/local/bin:/usr/local/sbin:||' \
    -e 's|command|usr/sbin|' \
    -e 's|/service|/etc/service|g' svscanboot > svscanboot~ &&
mv svscanboot~ svscanboot &&
chmod 555 svscanboot &&
cp * /usr/sbin &&
cd ../package &&
cat /etc/inittab boot.inittab > /etc/inittab~ && 
mv -f /etc/inittab~ /etc/inittab &&
mkdir /etc/service &&
telinit Q

El paquete daemontools no viene con páginas de manual, así que instala este paquete si quieres ayuda en línea con los programas de daemontools:

tar xzvf daemontools-0.76-man.tar.gz &&
cp daemontools-man/*.8 /usr/share/man/man8

Explicación de los comandos

Lo primero que hay que entender al instalar cualquier paquete escrito por Daniel J. Bernstein, y esto incluye qmail, djbdns y ucspi-tcp aparte de daemontools, es que incumple los estándares si su idea de hacer bien las cosas difiere de un estándar en particular. El profesor Bernstein es un estándar por sí mismo en lo que a su software se refiere.

Esto implica que es necesario hacer algunos cambios en los comandos de instalación de sus paquetes para poder instalarlos de forma que cumplan el Estándar de la Jerarquía del Sistema de Ficheros (FHS). Muchos de los siguientes comandos se deben a este hecho.

cd admin/daemontools-0.76 : Primero, el paquete se desempaqueta en un directorio admin. Encontrarás el paquete en sí dos directorios por debajo de este.

package/compile : Este comando compila las fuentes y prepara los binarios.

Como vamos a instalar los binarios en /usr/sbin en lugar de crear un directorio /command que no es estándar, debemos cambiar varias rutas:

sed 's|command|usr/sbin|' boot.inittab > boot.inittab~
mv boot.inittab~ boot.inittab

En boot.inittab, cambiamos /command/svscanboot por /usr/sbin/svscanboot.

sed -e 's|/command:/usr/local/bin:/usr/local/sbin:||' \
    -e 's|command|usr/sbin|' \
    -e 's|/service|/etc/service|g' svscanboot > svscanboot~ &&

Esto cambia varias rutas en el guión svscanboot. En nuestra configuración svscan comprobará en el directorio /etc/service los demonios a lanzar, en lugar de usar /service.

cp * /usr/sbin : Debemos copiar manualmente los binarios al directorio /usr/sbin.

cat /etc/inittab boot.inittab > /etc/inittab~
mv -f /etc/inittab~ /etc/inittab

Estos comandos añaden una línea en /etc/inittab para que init lance el guión svscanboot.

mkdir /etc/service : Este comando crea el directorio de control de daemontools, que es necesario que exista aunque esté vacío, para que daemontools funcione correctamente.

telinit Q : Este comando le dice al proceso init que lea de nuevo su fichero de configuración (inittab) y actúe en consecuencia según los cambios que se hayan producido. Se ejecuta el guión svscanboot.

Contenido

El paquete daemontools contiene svscanboot, svscan, supervise, svc, svok, svstat, fghack, pgrphack, readproctitle, multilog, tai64n, tai64nlocal, setuidgid, envuidgid, envdir, softlimit y setlock. Una descripción más detallada de estos comandos puede encontrarse en http://cr.yp.to/daemontools.html.

Descripciones

svscanboot

svscanboot es un guión simple que llama a svscan y dirige su salida a readproctitle.

svscan

svscan comprueba en el directorio service los demonios a lanzar e inicia un proceso supervise para cada guión encontrado.

supervise

supervise lanza los guiones de inicio que le pasa svscan y monitoriza el proceso que inicia el guión, de modo que si este muere, supervise lo reinicia.

svc

svc envía señales a los procesos iniciados por supervise.

svok

svok comprueba si supervise se está ejecutando en el directorio que se le indica.

svstat

svstat imprime el estado de los procesos monitorizados por supervise.

fghack

fghack evita que los procesos pasen a segundo plano.

pgrphack

pgrphack lanza un proceso en un grupo de procesos separado.

readproctitle

readproctitle muestra las entradas de registro en la salida de ps.

multilog

multilog es un programa de registro de eventos. Toma la salida de un demonio y la añade a cualquier número de registros.

tai64n

tai64n es un programa de generación de marcas de tiempo (timestamps).

tai64nlocal

tai64nlocal convierte la salida de tai64n a un formato legible por humanos.

setuidgid

setuidgid lanza un programa con los UID y GID de la cuenta indicada.

envuidgid

envuidgid realiza la misma función que setuidgid, pero establece las variables de entorno UID y GID igual a los UID y GID de la cuenta especificada.

envdir

envdir lanza un programa con las variables de entorno especificadas por los ficheros de un directorio.

softlimit

softlimit permite establecer límites de recursos para un programa.

setlock

setlock bloquea un fichero y lanza un programa.