daemontools-0.76

介绍Daemontools

下载地址 (HTTP):       http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
下载地址 (FTP):                
版本:                          0.76
包的大小:                      162 KB
占用磁盘空间:                  1.8 MB
其他下载地址:
daemontools errno patch

daemontools 软件包是inetd和winetd的代替品。这里用它的主要理由是:他被 qmail 和 djbdns 推荐使用。

安装 daemontools

用下面的命令安装daemontools:

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

命令解释

安装Daniel J. Bernstein的软件包(除了 daemontools,还有 Qmail,djbdns 和 ucspi-tcp)时,首先要了解的事情是:如果他认为自己的观点是正确的,但标准和他的想法不同,他会完全漠视一切标准。在Bernstein的软件里,他把自己作为标准。

因此,需要在安装的时候做一些小小的改变,使它适应FHS(Filesystem Hierarchy Standard)标准。许多命令由此而改变。

cd admin/daemontools-0.76: 这个包在admin目录被解压,你会在它下面2层目录下找到实际的包。

package/compile: 这个命令编译源代码,把二进制文件放到命令目录里。

由于我们打算把二进制文件放到 /usr/sbin 而不是创建一个非标准的 /command 目录,必须改变几个路径:

sed 's|command|usr/sbin|' boot.inittab > boot.inittab~
mv boot.inittab~ boot.inittab
在 boot.inittab 中, /command/svscanboot 被改成 /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~ &&

在这里,svscanboot 脚本中的好几个路径被改变了。按照我们的安装,svscan 在运行前将检查 /etc/service 目录而不是 /service 目录,才启动守护进程。

cp * /usr/sbin: 我们必须手工拷贝二进制文件到/usr/sbin目录。

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

这些命令在/etc/inittab中添加一行,使init运行svscan程序。

mkdir /etc/service: 这个命令创建daemontools控制目录。此目录即便是空的也必须创建(为了使daemontools运行)。

telinit Q: T这个命令告诉init进程重新读取设置文件(inittab),使改变生效。这就启动了 svscanboot 脚本。

内容

daemontools 软件包包含 svscanboot, svscan, supervise, svc, svok, svstat, fghack, pgrphack, readproctitle, multilog, tai64n, tai64nlocal, setuidgid, envuidgid, envdir, softlimitsetlock. 更多的详细描述,请参考http://cr.yp.to/daemontools.html.

描述

svscanboot

svscanboot 是一个普通的脚本, 用来运行svscan,把输出定向到readproctitle。

svscan

svscan 检查服务目录,为每一个找到的脚本开始管理进程。

supervise

supervise运行 svscan给它的运行脚本,监听脚本开始的进程,当进程死亡的时候,使之重新运行。

svc

svc 发送信号到在supervise下运行的进程。

svok

svok 检查目录中运行的 supervise 。

svstat

svstat显示supervise监听到的进程的状态。

fghack

fghack 防止进程把自己放到后台运行。

pgrphack

pgrphack 在单独的进程组里开启一个进程。

readproctitle

readproctitle 显示ps输出的log文件。

multilog

multilog 是登陆程序。它从daemon获得输出,添加到log文档里。

tai64n

tai64n 是一个timestamp生成程序。

tai64nlocal

tai64nlocal 改变 tai64n 输出文件到可读的格式。

setuidgid

setuidgid 在指定的帐号下运行一个特定的程序。

envuidgid

envuidgid 完成setuidgid程序的功能,但是设置环境变量$UID 和 $GID 帐号提供的UID和GID

envdir

envdir 在目录里运行利用环境变量提供的程序。

softlimit

softlimit 对指定程序允许资源限制。

setlock

setlock 锁住可执行程序的文件。