daemontools-0.76

Introduction à daemontools

Le package daemontools remplace inetd ou xinetd. La principale raison pour l'utiliser vient du fait qu'il est recommandé de l'utiliser avec qmail et djbdns.

Informations sur le package

Installer daemontools

Installez daemontools en lançant les commandes suivantes :

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

Le package daemontools n'a pas de pages man, donc installez ce package si vous voulez avoir une aide en ligne pour les programmes daemontools :

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

Explications des commandes

La première chose à comprendre pour l'installation de n'importe quel package écrit par Daniel J. Bernstein, et ceci inclut qmail, djbdns et ucspi-tcp en plus de daemontools, est qu'il veux ignorer les standards si son idée de la bonne façon de faire diffère d'un standard particulier. Le professeur Bernstein est un standard en lui-même quand cela touche son propre logiciel.

Il est donc nécessaire de faire quelques modifications de façon à ce que ce soit compatible avec le FHS (Filesystem Hierarchy Standard, ou Standard de la structure du système de fichiers). La plupart des commandes suivantes est dûe à cette difficulté.

cd admin/daemontools-0.76 : Tout d'abord, le package est déballé dans un répertoire admin. Vous trouverez les packages actuels à deux niveaux de répertoire en dessous de ceci.

package/compile : Cette commande compile le code source et prépare les binaires.

Comme nous installons les binaires dans /usr/sbin au lieu de créer un répertoire /command non standard, plusieurs chemins doivent être modifiés :

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

Dans boot.inittab, /command/svscanboot est modifié par /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~ &&

Ici, différents chemins sont ajustés dans le script svscanboot. Dans notre configuration, svscan vérifiera le répertoire /etc/service au lieu de /service pour les démons à lancer.

cp * /usr/sbin : Nous devons copier manuellement les binaires dans le répertoire /usr/sbin.

cat /etc/inittab boot.inittab > /etc/inittab~
mv -f /etc/inittab~ /etc/inittab
Ces commandes ajoutent une ligne dans /etc/inittab de façon à ce que init démarre le programme svscanboot.

mkdir /etc/service : Cette commande crée le répertoire de contrôle des daemontools, qui, même vide, doit exister pour que les daemontools puissent fonctionner correctement.

telinit Q : Cette commande demande au processus init de relire son fichier de configuration (inittab) et d'agir selon les changements qui y ont été apportés. Le script svscanboot est lancé.

Contenu

Le package daemontools contient svscanboot, svscan, supervise, svc, svok, svstat, fghack, pgrphack, readproctitle, multilog, tai64n, tai64nlocal, setuidgid, envuidgid, envdir, softlimit et setlock. Des descriptions plus détaillées peuvent être touvées sur http://cr.yp.to/daemontools.html.

Description

svscanboot

svscanboot est un script appellant svscan et renvoyant la sortie sur readproctitle.

svscan

svscan vérifie dans le répertoire service les démons à lancer et lance un processus supervise pour chaque script qu'il trouve en cours d'exécution.

supervise

supervise lance le script run que svscan lui a donné et surveille les processus que le script lance, de façon à ce que, si un d'entre eux meure, supervise puisse le relancer.

svc

svc envoie des signaux aux processus lancés à partir de supervise.

svok

svok vérifie que supervise tourne dans le répertoire qui lui a été donné.

svstat

svstat affiche l'état des processus en cours de surveillance par supervise.

fghack

fghack empêche les processus de se mettre en tâche de fond.

pgrphack

pgrphack lance un processus dans un groupe de processus séparé.

readproctitle

readproctitle affiche les entrées du journal en sortie de ps.

multilog

multilog est un programme d'enregistrements (logging). Il prend la sortie d'un démon et l'ajoute dans un certain nombre de journaux.

tai64n

tai64n est un programme de génération d'horodatage.

tai64nlocal

tai64nlocal convertit la sortie de tai64n en format lisisble par un humain.

setuidgid

setuidgid lance un programme spécifié sous un UID et GID donnés.

envuidgid

envuidgid réalise la même fonction que setuidgid, mais positionne les variables d'environnement UID et GID à la même valeur que l'UID et le GID du compte spécifié.

envdir

envdir lance un programme donné avec des variables d'environnement spécifiées par fichiers d'un répertoire.

softlimit

softlimit autorise la mise en place de limite de ressources pour un programme donné.

setlock

setlock verrouille un fichier et lance un programme.