Linux使用daemontools
功能:
在使用memcached时候,怕因为一些不可预知的因素导致memcached进程死掉,而又不能及时的发现重启,可以通过daemontools来管理memcached的启动,当memcached死掉后系统会自动在5秒内重memcached;
1、安装
yum install csh
http://cr.yp.to/daemontools/daemontools-0.76.tar.gz下载
yum install gcc tcsh # gcc, csh 要求
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz tar -zxf daemontools-0.76.tar.gz mv daemontools-0.76 /var/lib/ # 非常重要, 安装完成后不能删除: /var/lib/daemontools-0.76 chown root:root -R /var/lib/daemontools-0.76 chmod 755 /var/lib/daemontools-0.76 cd /var/lib/daemontools-0.76/ # 必须进入此目录才能编译 ./package/install sed -i '$acsh -cf \x27\/command\/svscanboot &\x27' /etc/rc.d/rc.local
最后一句命令是在 ‘/etc/rc.d/rc.local’ 文件上加上了一句:
csh -cf '/command/svscanboot &'
启用:
sh /etc/rc.local 或 systemctl start rc-local
检查服务是否启动:
ps -ef|grep svscanboot root 13716 1 0 04:44 pts/1 00:00:00 /bin/sh /command/svscanboot
使机器重启后生效:
chmod +x /etc/rc.d/rc.local # 必须有,否则重启不能启动 svscanboot 服务
如果你的glibc库比较新,此时你很可能会遇到下面错误:
/usr/bin/ld: errno:
TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o
/lib/libc.so.6: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [envdir] Error 1
Copying commands into ./command...
cp: cannot stat `compile/svscan': No such file or directory
为了解决这个问题,接着上面的安装步骤继续:
cd src wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch patch < daemontools-0.76.errno.patch cd .. package/install
通过ps -ef | grep svscan 来确认安装是否成功
该版本已经把脚本自动加到系统启动脚本里
/etc/inittab
开机会自动启动
2、配置
在/service下建立memcached目录
在/service/memcached新建名为run的启动脚本,如下
#!/bin/sh
exec 2>&1
exec /usr/local/bin/memcached -u root -m 30
启动服务:
svc -du /service/memcached(重启memcached进程)
svc -u /service/memcached(启动memcached进程)
svc -d /service/memcached(停止memcached进程)