使用Supervisor将崩溃后的挖矿进程自动重启

Written by

in

我们在《如何利用VPS在ypool矿池里挖Primecoin》一文中介绍了如何在矿池里挖取 Primecoin,其它山寨币的挖矿方法也如法炮制,但有时候会发现挖矿突然崩溃掉线,往往很长时间之后我们才发现,就是用了nohup命令也无济于事。网上有不少方法都是在 /etc/init.d/ 下建立启动脚本,监控进程如果发生崩溃后自动重启,但都很复杂和繁琐,而且不同服务器和不同系统版本的配置又有差异,让我等小白情何以堪。有没有一种更简单的方法呢?

通常需要借助一些辅助工具. 常用的管理工具有 runitdaemontools 以及用 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.confsupervisor 的主配置文件,定义服务名称以及接口等等。

二、配置

主配置文件 的路径位于 /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

除非注明,本博客文章均为原创,转载请以链接形式标明本文地址