supervisor是用python开发的一个在linux系统下的进程管理工具,可以方便的监听,启动,停止一个或多个进程。当一个进程被意外杀死后,supervisor监听到后,会自动重新拉起进程。

一、supervisor的安装

1、通过easy_install安装

yum -y install python-setuptools
easy_install supervisor

2、通过yum安装

yum -y install supervisor

3、通过pip安装

yum -y install epel-release
yum -y install python-pip
pip install supervisor

安装好后,会生成三个执行命令,echo_supervisord_conf,supervisorctl,supervisord。

二、supervisor的配置文件

supervisor的默认配置文件在 /etc/supervisord.conf 下,如果没有可以通过如下命令生成

echo_supervisord_conf > /etc/supervisord.conf

常用的配置项如下:

[unix_http_server]
file=/tmp/supervisor.sock ; unix socket文件,supervisorctl会使用
;chmod=0700 ; socket文件权限
;chown=nobody:nogroup ; socket文件所属用户和用户组 [inet_http_server] ; web管理界面
port=127.0.0.1:9001 ; 管理界面的IP和端口
username=admin ; 登陆管理界面的用户名
password=123456 ; 登陆管理界面的密码 [supervisord]
logfile=/tmp/supervisord.log ; 日志文件
logfile_maxbytes=50MB ; 日志文件大小,为0表示不限制
logfile_backups=10 ; 日志文件备份数量,为0表示不备份
loglevel=info ; 日志级别,也可设置为 debug,warn,trace
pidfile=/tmp/supervisord.pid ; PID文件路径
nodaemon=false ; 是否前台启动,为false表示守护进程方式
minfds=1024 ; 打开文件描述符的最小值
minprocs=200 ; 创建进程数的最小值 [supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; 通过 unix sokcet 连接supervisord
;serverurl=http://127.0.0.1:9001 ; 通过http方式连接supervisord [include]
files = /etc/supervisord/confs/*.conf ; 包含其他配置文件,可以是.conf或.ini

我们需要把 [include] 前面的注释打开,并配置 files 的路径。

创建 files 中配置的目录。

mkdir -p /etc/supervisord/confs/

  

三、配置一个php脚本进程

我们在 /etc/supervisord/confs/ 目录下创建一个 demo.conf 文件。

;demo表示程序名称
[program:demo]
;需要执行的命令
command=php demo.php
;命令执行的目录
directory=/data/wwwroot
;环境变量
environment=PATH="/data/nmp/php/bin/"
;哪个用户运行
user=root
;是否自启动
autostart=true
;是否自动重启
autorestart=true
;自动重启时间间隔,单位秒
startsecs=3
;错误日志文件
stderr_logfile=/tmp/demo.err.log
;输出日志文件
stdout_logfile=/tmp/demo.out.log

demo.php的代码如下:

<?php

$i = 0;
while(true) {
$i++;
echo $i, PHP_EOL;
sleep(1);
}

  

四、管理进程。

管理进程,需要我们启动 supervisor 服务,这里我们配置 systemctl,开机自动启动 supervisor。

创建 /usr/lib/systemd/system/supervisord.service 文件,配置如下:

[Unit]
Description=Supervisor daemon [Service]
Type=forking
ExecStart=/usr/bin/supervisord
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s [Install]
WantedBy=multi-user.target

启用配置

systemctl enable supervisord.service

启动 supervisord

systemctl start supervisord.service

成功后,就可以通过 supervisorctl 交互命令管理进程脚本了。

读取有更新的配置文件

supervisorctl reread

更新配置文件修改过的程序

supervisorctl update

如果修改过 /etc/supervisord.conf 请使用如下命令

supervisorctl reload

启动,停止,重启,程序。

supervisorctl start 程序名
supervisorctl stop 程序名
supervisorctl restart 程序名

  

五、supervisor图形化管理界面

需要开启 /etc/supervisord.conf 文件中的 [inet_http_server]

[inet_http_server]
port=0.0.0.0:9001
username=admin
password=123456

设置完后,要开放 9001 端口,并重启 supervisor

firewall-cmd --zone=public --add-port=9001/tcp --permanent
firewall-cmd --reload

重启 supervisor

supervisorctl reload

  

php使用supervisor管理进程脚本的更多相关文章

  1. Supervisor 管理进程,Cloud Insight 监控进程,完美!

    Supervisor 是由 Python 语言编写.基于 linux 操作系统的一款服务器管理工具,用于监控服务器的运行,发现问题能立即自动预警及自动重启等. Cloud Insight 是一款次世代 ...

  2. supervisor管理进程 superlance对进程状态报警

    supervisor介绍 首先,介绍一下supervisor.Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linu ...

  3. Linux服务:使用Supervisor管理进程

    一.简介 由于基本每个公司都会用到supervisor这个进程管理工具,这里简单阐述一下. Supervisor (http://supervisord.org) 是一个用Python写Linux下的 ...

  4. Supervisor管理进程

    Supervisor管理进程 转载 2016年04月14日 18:26:45 标签: supervisord 28344 Supervisor重新加载配置启动新的进程 liaojie 发布于 1年前, ...

  5. Django与supervisor 管理进程

    1.前言 在Django项目中,我们需要用到一些独立于Django框架外的脚本.这样一些脚本可能需要独立的持续运行,且具有很强的可维护性,这个时候supervisor就可以排上用场了. 基于pytho ...

  6. supervisor管理进程工具配置

    Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统 ...

  7. 在Docker里使用(支持镜像继承的)supervisor管理进程(转)

    这篇文章是受 dockboard 之托帮忙翻译的与 docker 有关的技术文章.译自 Using Supervisor with Docker to manage processes (suppor ...

  8. pm2 代替 Supervisor 管理进程

    前提 我们在使用 Laravel 的时候不免用到列队来处理任务,而 Laravel 官方文档给出的是 Supervisor 来管理进程和监控.但是我们在使用中有下面几个缺点: Supervisor 单 ...

  9. 使用 supervisor 管理进程

    安装: # yum install python-setuptools # easy_install supervisor 如果已经安装了epel和python-pip, 也可以简单 pip inst ...

随机推荐

  1. 浮点运算与boost.multiprecision

    在C++中,float占4个字节,double占8个字节,均采用 IEEE 754 浮点标准:内部都是以二进制为基础,表述实数,有些实数可以被精确表述,比如0.2,但有些不行,比如0.3.针对这一点, ...

  2. SQl Server 中的decimal( m , n )的意思

    create table sc( cno ), sno ), grade ,), primary key(cno,sno), foreign key(cno) references cou(cno), ...

  3. jQuery 源码分析(二十) DOM操作模块 插入元素 详解

    jQuery的DOM操作模块封装了DOM模型的insertBefore().appendChild().removeChild().cloneNode().replaceChild()等原生方法.分为 ...

  4. 在IntelliJ IDEA中,Lombok注解@Slf4j找不到log解决方案

    在IntelliJ IDEA中,注解@Slf4j找不到log时,可以安装Lombok插件 File → settings → Plugins, 然后点击"Browse repositorie ...

  5. ZooKeeper(六):watch机制的原理与实现

    因为ZK有watch机制,可以随时发现一些数据的变化,从而达到数据的及时性. ZK的所有读操作都可以设置watch监视点: getData, getChildren, exists. 写操作则是不能设 ...

  6. abp去掉AbpUser中的Name,Surname,去掉姓和名分离

    abp是国外的框架,默认的框架中的AbpUser表中的Name和Surname是分开的,这不符合国情:可以先去掉 1. 在User类中重写Name和Surname,并设置为私有 2. 在DbConte ...

  7. 常用类-excel转csv

    public class ExcelFileHelper { public static bool SaveAsCsv(string excelFilePath, string destination ...

  8. Java生鲜电商平台-交易对账以及跟商家对账的思考

    Java生鲜电商平台-交易对账以及跟商家对账的思考 说明:对于任何一家电商而言,资金的安全尤为重要,在资金管理过程中,涉及到交易订单的对账以及商家的对账,那i么如何来保证对账的高效与准确呢? 公司在搭 ...

  9. Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限

    场景 Winforn中实现ZedGraph自定义添加右键菜单项(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  10. CAD编辑器哪个好用?如何使用CAD编辑器

    说起CAD图纸很多的朋友都很熟悉,因为CAD图纸在很多领域都有广泛的应用.那CAD图纸都是使用CAD编辑器制图软件来进行绘制的,图纸的格式都是为dxf格式或者是dwg格式的.对于才接触CAD的伙伴们来 ...