supervisord
- 是client/server 系统
- 把不是守护进程的进程变成守护进程
- 监控它自己启动的进程,类似于看门狗
- 可以作为开机启动的一种封装
- 可以精确控制进程的状态,而不是pidfile那么不准确
安装
说白了就是个Python包,官方文档,我这里系统是centos6.5 root用户
一般安装完的时候显示安装路径,如果不在bin路径,就自己添加一个软连接
配置文件在 /etc/supervisord.conf
我这里安装之后没有发现,我先到安装目录下找找,没有在自己创建那个文件,如果启动没有找
到就在启动命令中添加配置文件路径。
配置
supervisord 提供了一个模板文件,执行下面shell文件或者输出到文件中,改改就可以用了
不过模板文件有点太多了,我们还是按照文档写点程序来配置把,这次的目标是启动一个django开发
服务器并且让他成为一个独立进程,可以控制这个进程。
建立一个最简单的django,并可以启动
编辑supervisord文件 文件的内容如下 (有错误) ,文件的位置就是root的home路径 /root
启动下观察效果,出现了一个错误。
意思是少了 [supervisrod] 配置项,可以参考 supervisord-section-settings, 修改配置文件如下,还有log文件最好先建立好,supervisord不会自己创建。
再次启动:
正常启动了,我们来看下进程: ps -efH|grep python
<div class="linenums" style="margin: 0px; padding-left: 0px; color: rgb(30, 52, 123);"><div class="L0" style="margin: 0px; color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code style="margin: 0px; padding: 0px; border: none; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word; max-width: 100%; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76); margin-top: 0px;">root </span><span class="lit" style="color: rgb(25, 95, 145);">26253</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">1</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">0</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">02</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="lit" style="color: rgb(25, 95, 145);">57</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">?</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">00</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="lit" style="color: rgb(25, 95, 145);">00</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="lit" style="color: rgb(25, 95, 145);">00</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">usr</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">bin</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">python </span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">usr</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">bin</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">supervisord </span><span class="pun" style="color: rgb(147, 161, 161);">-</span><span class="pln" style="color: rgb(72, 72, 76);">c </span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">root</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">supervisord</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">conf</span></code></div><div class="L1" style="margin: 0px; color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code style="margin: 0px; padding: 0px; border: none; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word; max-width: 100%; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76); margin-top: 0px;">lzz </span><span class="lit" style="color: rgb(25, 95, 145);">26254</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">26253</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">0</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">02</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="lit" style="color: rgb(25, 95, 145);">57</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">?</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">00</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="lit" style="color: rgb(25, 95, 145);">00</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="lit" style="color: rgb(25, 95, 145);">00</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">usr</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">bin</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">python </span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">home</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">lzz</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">lzztest</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">manage</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">py runserver </span><span class="lit" style="color: rgb(25, 95, 145);">8000</span></code></div><div class="L2" style="margin: 0px; color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code style="margin: 0px; padding: 0px; border: none; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word; max-width: 100%; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76); margin-top: 0px;">lzz </span><span class="lit" style="color: rgb(25, 95, 145);">26255</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">26254</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">1</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">02</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="lit" style="color: rgb(25, 95, 145);">57</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">?</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">00</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="lit" style="color: rgb(25, 95, 145);">00</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="lit" style="color: rgb(25, 95, 145);">01</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">usr</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">bin</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">python </span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">home</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">lzz</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">lzztest</span><span class="pun" style="color: rgb(147, 161, 161);">/</span><span class="pln" style="color: rgb(72, 72, 76);">manage</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">py runserver </span><span class="lit" style="color: rgb(25, 95, 145);">8000</span></code></div></div>
终端关闭,重新打开别的终端可以看到进程正常。
实验基本成功,后面进程之间关系,怎么自动启动和停止被控制的程序等以后在深入研究下。
参考:
本文出自 “orangleliu笔记本” 博客,转载请务必保留此出处http://blog.csdn.net/orangleliu/article/details/41317887