supervisor 进程管理

主要包含后台进程 supervisord 和控制台 supervisorctl 两个程序

supervisor
# 官方文档 http://www.supervisord.org/installing.html

# 此程序是用python开发,python2.7.x 运行中没有发现问题.
# 目标机器没有pip, 所以使用离线安装. 下载以下三个压缩包最新版:
# https://pypi.org/pypi/supervisor/
# https://pypi.org/pypi/setuptools/
# https://pypi.org/pypi/meld3/ # 复制到目标机器, 解压,安装.
sudo tar zxf meld3-2.0..tar.gz
sudo tar zxf supervisor-4.0..tar.gz
sudo unzip setuptools-41.2..zip cd setuptools-41.2.
sudo python setup.py install cd ../meld3-2.0.
sudo python setup.py install cd ../supervisor-4.0.
sudo python setup.py install # 留意安装信息显示的安装位置
...
Installing echo_supervisord_conf script to /usr/bin
Installing supervisorctl script to /usr/bin
Installing supervisord script to /usr/bin # 生成配置文件示例格式,可在此基础修改
echo_supervisord_conf > /etc/supervisor/supervisord.conf # ------------------------- supervisord.conf ---------------------------
[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file) [inet_http_server]
port=0.0.0.0:
username=admin
password= [supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups= ; (num of main logfile rotation backups;default )
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds= ; (min. avail startup file descriptors;default )
minprocs= ; (min. avail process descriptors;default ) [rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
username=admin ; should be same as http_username if set
password= ; should be same as http_password if set [include]
files = conf.d/*.conf # 使用包含子目录的方式,指定单个接管的程序
# ------------------------- /etc/supervisor/conf.d/test.demo.conf ---------------
[program:test.demo]
command=dotnet Csharp_class.dll
directory=/webapp/test.demo/
process_name=%(program_name)s
stderr_logfile=/var/log/test.demo.log
stdout_logfile=/var/log/test.demo.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=3 # 启动服务
# 可以 -c 指定配置文件,也可不指定,程序将自动寻找 supervisor.conf
sudo supervisord -c /etc/supervisor/supervisord.conf # 注意:一台机器不能有多个同名配置文件.
# 某服务器就因为有 /etc/supervisord.conf 但是启动服务用的 -c /etc/supervisor/supervisord.conf
# 两处配置文件内容不同导致进入 supervisorctl 始终出现错误: unix ///var/run/supervisor.sock refused connection # ----------------------------- shell ----------------------------------
supervisorctl # 进入shell 如果配置正确,登录后将直接列出管理的程序 status # 列出状态
version # 版本
help
shutdown # 结束 supervisord 服务
reread # 重读配置文件,列出变化
update # 重读配置文件并生效(默认更新全部),指定名称则更新单个

start test # 启动单个
start all # 启动全部
stop test # 停止单个
stop all # 停止全部
restart test # 重启单个
restart all # 重启全部
remove test.demo # 移除 test.demo
## 如果更改了配置文件,一定要先reread, 然后 update ,
# 直接 restart 只会重新载入程序代码,不会重载配置文件。
# 例如我改了/etc/supervisor/conf.d/demo.conf
# 必须先reread, 提示发现变化后,再执行 update demo 才能让配置生效。

如果需要开机自动启动,可将其安装为系统服务:

# --------------- 安装为系统服务 ---------------------------------------
# 安装时会产生服务文件: cat /usr/lib/systemd/system/supervisord.service
# ll /etc/systemd/system/multi-user.target.wants 时可以
# 看到supervisord.service文件的真实链接
# 当 systemctl enable supervisord 时,则将此链接作为服务配置文件 [Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service nss-user-lookup.target [Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s [Install]
WantedBy=multi-user.target # 如果已经有运行的 supervisor及程序,需要先进入shell, stop all
# 然后再 kill -9 对应的supervisor主程序,使用服务管理的方式启动。
sudo systemctl enable supervisord
sudo systemctl start supervisord
sudo systemctl status supervisord
sudo systemctl list-unit-files   # 检查列表中是否存在并且 enabled

systemd 参考: http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

今天加入了一个nodejs程序, 添加配置文件到 /etc/supervisor/conf.d

[program:parsoid]
command=node bin/server.js
directory=/opt/parsoid
process_name=%(program_name)s
stderr_logfile=/opt/parsoid/logs/err.log
stdout_logfile=/opt/parsoid/logs/parsoid.log user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=3

依次执行下方测试:

supervisorctl

>reread  # 发现
>update >status
>stop parsoid # 测试停止
>start parsoid # 测试启动
>status

我现在的公司,主要用它来管理 dotnet 程序

centos7 安装 dotnet-sdk

rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

yum install dotnet-sdk-3.1

supervisor 管理应用程序的更多相关文章

  1. 配置supervisor管理beego应用

    一.golang.beego等环境安装与配置 二.supervisor安装 github项目地址:https://github.com/Supervisor/supervisor 克隆项目:git c ...

  2. 使用Supervisor管理Celery进程。

    讲过一篇celery的,但是celery启动后并不是daemon的,在生产环境中这肯定是不可以的,那怎么办呢? 这就需要使用supervisor进行进程管理了,下面详细介绍. 一. superviso ...

  3. 如何使用supervisor管理你的应用

    1.前言 Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是UNIX-like系统下的一个进程管理工具,不支持Windo ...

  4. 使用supervisor管理进程

    Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动.重启.关闭进程(不仅仅是 Python 进程).除了对单个进程的 ...

  5. Supervisor管理进程

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

  6. supervisor管理进程工具配置

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

  7. supervisor 管理uwsgi 进程

    Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动 重启.它是通过fork/exec的方式把这些被管理的进 ...

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

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

  9. 使用Supervisor管理Linux进程

    使用Supervisor管理Linux进程 简介 Supervisor是一个C/S系统,它可以在类UNIX系统上控制系统进程,由python编写,提供了大量的功能来实现对进程的管理. 安装 sudo ...

随机推荐

  1. appium---adb logcat 命令详解

    我们在做app测试的过程中,肯定会遇到需要抓取日志问题,这几天安静也遇到了此问题,后台日志生成的太多了,保存本地了吧,设备多没有这么USB,通过wifi连接又太麻烦,你说这怎么是好?不要着急,我们往下 ...

  2. CentOS7设置开机自启动方式

    方式一: # 在/etc/rc.d/rc.local文件中追加启动命令,该文件追加后,会随着机器自动后,自动运行文件中的命令 # vim /etc/rc.d/rc.local # 权限问题:在cent ...

  3. Maven配置以及环境搭配

    1. Maven简单介绍 Apache Maven是个项目管理和自动构建工具,基于项目对象模型(POM)的概念. 作用:完成项目的相关操作,如:编译,构建,单元测试,安装,网站生成和基于Maven部署 ...

  4. 02-align-items的用法

    侧轴是相对的 默认主轴是x 所以侧轴就是y轴 align-items设置侧轴上的子元素排列的方式(单行)纵轴方向上的对齐方式 align-items: flex-start; 顶部对齐 align-i ...

  5. redis常规命令记录

      概述 因为redis是单线程执行,所以不用关心并发问题. 简单记录一下redis的操作命令,留作查阅,回头再整理一下事物等操作. reids中存储的是kev-value形式, 其中的value有几 ...

  6. 【洛谷P3329】 [ZJOI2011]最小割(最小割树)

    洛谷 题意: 给出一个无向图,之后有\(q,q\leq 30\)组询问,每组询问有一个\(x\),回答有多少点对\((a,b)\)其\(a-b\)最小割不超过\(x\). 思路: 这个题做法要最小割树 ...

  7. GitHub密钥生成

    前提电脑上需装有Git软件 这里提供百度云下载地址:https://pan.baidu.com/s/1r0y4XRyQCz7ZJBnZJhAtqw 提取码:88qf  1.登录GitHub账号 2.点 ...

  8. destoon模块绑定二级域名出现 File not found解决办法

    昨天晚上帮一个朋友给我说他绑定模块二级域名出现 File not found,所以今天分享关于解决办法. 模块启用二级域名后,首页打开正常,但是点内容页和列表页出现File not found. 解决 ...

  9. Django middleware (中间件)

    关于中间价: django 中的中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项目的settings中,有一个 MIDDLE ...

  10. Fink| API| Time与Window

    1. Flink 批处理Api 1.1 Source Flink+kafka是如何实现exactly-once语义的 Flink通过checkpoint来保存数据是否处理完成的状态: 有JobMana ...