/etc/init.d/ 下建立启动脚本,监控进程如果发生崩溃后自动重启,但都很复杂和繁琐,而且不同服务器和不同系统版本的配置又有差异,让我等小白情何以堪。有没有一种更简单的方法呢?通常需要借助一些辅助工具. 常用的管理工具有 runit, daemontools 以及用 Python 开发的 Supervisor. 其中以 Supervisor 最为易用, 功能也很完善。
Supervisor是用 Python 开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台 daemon,并监控进程状态,异常退出时能自动重启。
一、安装
首先必须先安装好 python 环境,Linux 已经自带 python,建议安装 python2.7.5. 先在终端输入 python 查看python 版本,能正常显示则表明没问题,输入 exit() 退出 python 环境。
Centos下用 easy_instal l安装
easy_install supervisor
Debian / Ubuntu可以直接通过 apt 安装:
apt-get install supervisor
安装成功后显示 finished ,我们再次进行 python 环境,输入:
import supervisor
如果没提示错误则表示安装成功。
安装之后,会有两个可执行文件:
/usr/bin/supervisord -- supervisor服务守护进程 /usr/bin/supervisorctl -- supervisor控制台进程
Supervisor 有两个可执行程序 – supervisord 和 supervisorctl:
Supervisord是后台管理服务器, 用来依据配置文件的策略管理后台守护进程, 它会随系统自动启动Supervisorctl用于管理员向后台管理程序发送 启动/重启/停止 等指令;
它们之间的关系就相当于 Apache 的 httpd 和 apachectl.
在/etc/supervisor 目录中存放着 supervisor 的配置文件:其中 conf.d 是一个子目录,其中存放着supervisor监管的进程的配置信息,一个进程有一个对应的配置文件;supervisord.conf 是 supervisor 的主配置文件,定义服务名称以及接口等等。
二、配置
主配置文件 的路径位于 /etc/supervisor/supervisord.conf, 主配置文件中的末尾两行文本:
[include] files = /etc/supervisor/conf.d/*.conf
指明了 Supervisor 会去 /etc/supervisor/conf.d/ 目录下查找以 .conf 结尾的子配置文件, 也就是说, 我们只需在 /etc/supervisor/conf.d/ 目录下为每个后台守护应用新建一个配置文件即可。
现在要用 supervisor监控一个脚本进程,在/etc/supervisor/conf.d 中新建一个关于这个脚本进程的配置文件。
cd /etc/supervisor/conf.d vim script.conf
其中输入:
[program:script.py] #程序的名字,在supervisor中可以用这个名字来管理该程序。 command=/home/hadoop/script1.1.py #启动程序的命令 autorstart=true #设置改程序是否虽supervisor的启动而启动 directory=/home/hadoop #相当于在该目录下执行程序 autorestart=true #程序停止之后是否需要重新将其启动 startsecs=10 #重新启动时,等待的时间 startretries=36 #重启程序的次数 redirect_stderr=true #是否将程序错误信息重定向的到文件 stdout_logfile=/home/hadoop/supervisor_log/log.txt #将程序输出重定向到该文件 stderr_logfile=/home/hadoop/supervisor_log/err.txt #将程序错误信息重定向到该文件
保存文件,便完成配置。
三、生效
每次修改主配置文件或增改子配置文件都需要执行 supervisorctl update 使新配置生效。或者用 supervisorctl reload 重新重新启动 supervisor 程序。
- 每次 修改主配置文件 或 增改子配置文件 都需要执行 supervisorctl update 使新配置生效:
sudo supervisorctl update
- 控制所有进程
sudo supervisorctl start all
sudo supervisorctl stop all
sudo supervisorctl restart all - 定向控制指定进程
sudo supervisorctl stop iot-kb
sudo supervisorctl start iot-kb
sudo supervisorctl restart iot-kb
四、管理
修改主配置文件,开启基于http的UI控制台:
sudo supervisorctl update
添加如下内容:
[inet_http_server] port = 192.168.1.60:9001 #IP和绑定端口 username = admin #管理员名称 password = 123456 #管理员密码
这样,在浏览器中输入配置中写的地址和端口号,输入配置好的用户名和密码,便可以看到基于网页的控制台界面。从中,可以察看 Supervisor 监控的信息,可以察看进程的日志等。E
挖矿系列文章