1. LA DETERMINACIÓN DE LA COSA.
4.3 La extinción de la opción de compra: caducidad, renuncia y pérdida de la cosa.
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.