前言:supervise是daemontools的一个工具,可以用来监控linux下程序的进程状态,当程序有一些问题(例如死掉)会根据设置 自动重启。我有一个socket服务器端需要一直监听数据,但是为了保证它不会莫名其妙的死掉而不可知,但是使用ICE(全称Internet Communications Engine)有点大材小用,所以使用了这个supervise自动重启死掉的程序并记录日志
1 下载安装配置:
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch #这个补丁是修复有些操作系统无法编译安装成功,过程中会报错停止的问题
tar xvzf daemontools-0.76.tar.gz
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 -f boot.inittab~ boot.inittab && cd ../command
sed -e ‘s/command:\/usr\/local\/bin:/usr\/local\/sbin:/’ -e ‘s/command\/svc/usr\/sbin\/svc/’ svscanboot > svscanboot~
mv -f svscanboot~ svscanboot && chmod +x svscanboot
sudo /bin/cp * /usr/sbin
添加: SV:123456:respawn:/usr/sbin/svscanboot 到 /etc/inittab
2 检查是否安装成功:
# pstree -p|grep svs #然后有下面类似的进程结构(括号中数据会不一样)
|-svscanboot(22011)-+-readproctitle(22014) |
`-svscan(22013)
3 编辑你要使用supervise的程序和配置文件
首先建立一个目录:
mkdir /home/dongwm/SocketSrv
然后编辑run配置文件:
cat /home/dongwm/SocketSrv/run #!/bin/sh echo ‘kill Socketsrv…’ kill -9 `ps -ef |grep Socketsrv.py |grep -v grep |awk ‘{print $2}’`
echo “`date +%Y%m%d-%H%M%S`” echo ‘start Socketsrv…’ python Socketsrv.py #这个就是你要让它关里的进程程序 就在Socketsrv目录下
4 启动进程: 为了排错,我使用了日志记录+日志轮转的方式()
nohup supervise /home/dongwm/SocketSrv |/usr/sbin/cronolog “/var/log/Socketsrv.log_%Y%m%d” &
表示后台运行,将输入定向到/var/log/Socketsrv.log 并且按天分日志
1 下载安装配置:
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch #这个补丁是修复有些操作系统无法编译安装成功,过程中会报错停止的问题
tar xvzf daemontools-0.76.tar.gz
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 -f boot.inittab~ boot.inittab && cd ../command
sed -e ‘s/command:\/usr\/local\/bin:/usr\/local\/sbin:/’ -e ‘s/command\/svc/usr\/sbin\/svc/’ svscanboot > svscanboot~
mv -f svscanboot~ svscanboot && chmod +x svscanboot
sudo /bin/cp * /usr/sbin
添加: SV:123456:respawn:/usr/sbin/svscanboot 到 /etc/inittab
2 检查是否安装成功:
# pstree -p|grep svs #然后有下面类似的进程结构(括号中数据会不一样)
|-svscanboot(22011)-+-readproctitle(22014) |
`-svscan(22013)
3 编辑你要使用supervise的程序和配置文件
首先建立一个目录:
mkdir /home/dongwm/SocketSrv
然后编辑run配置文件:
cat /home/dongwm/SocketSrv/run #!/bin/sh echo ‘kill Socketsrv…’ kill -9 `ps -ef |grep Socketsrv.py |grep -v grep |awk ‘{print $2}’`
echo “`date +%Y%m%d-%H%M%S`” echo ‘start Socketsrv…’ python Socketsrv.py #这个就是你要让它关里的进程程序 就在Socketsrv目录下
4 启动进程: 为了排错,我使用了日志记录+日志轮转的方式()
nohup supervise /home/dongwm/SocketSrv |/usr/sbin/cronolog “/var/log/Socketsrv.log_%Y%m%d” &
表示后台运行,将输入定向到/var/log/Socketsrv.log 并且按天分日志