centos 6.5, python 2.6, supervisor 3.3.1;

Linux下后台运行程序通常的做法是用nohub,然后配以进程的检测来实现服务式的操作,但其实有更好的选择supervisor,尤其是在多个程序需要管理时;

安装

yum直接安装的版本比较低,推荐使用Python的包安装工具进行安装:

# pip install supervisor

如果没有pip这个命令就:

# yum install python-pip -y

验证安装:

# supervisord -version
  3.3.

配置

生成主配置文件:

# echo_supervisord_conf > /etc/supervisord.conf

修改/etc/supervisord.conf末尾的include段:

# vi /etc/supervisord.conf
  [include]
  files = /etc/supervisord.d/*.ini

把自己的程序配置放到/etc/supervisord.d/里面:

# mkdir -p /etc/supervisord.d/
# vi /etc/supervisord.d/myapp.ini
[program:myapp]
command=/bin/sh /bin/myapp.sh  #程序启动命令
autostart=false  #是否随supervisord启动
autorestart=false  #退出后是否自动重启,可选unexpected表示异常退出时才自动重启
user=root  #启动用户
redirect_stderr=false  #是否把stderr重定向到stdout
stdout_logfile=/var/log/myapp.stdout  #stdout重定向到文件
stderr_logfile=/var/log/myapp.stderr  #stderr重定向到文件

这里只写了常用的配置,更多可参考/etc/supervisord.conf中的例子;

下面是程序myapp.sh的内容:

# cat /bin/myapp.sh
  #!/bin/sh
  n=
  while true
  do
  echo myapp $n
  let n++
  sleep
  done

使用

启动服务(可能会有警告说用了root用户,配置文件不是指定的而是搜索到的,没有影响):

# supervisord

使用命令supervisorctl可以进入supervisor的客户端shell,支持自动补全,输入help查看都有那些命令可用:

也可以用supervisorctl+cmd不进入shell进行操作:

下面介绍常用的命令:

reload            重启supervisord服务

shutdow          停止supervisord服务

maintail [-30/-f]       类似tail命令的方式查看服务进程的控制台输出

status            列出所管理程序的状态

start/stop/restart myapp  启动/停止/重启指定程序

pid             服务进程ID

pid myapp            指定程序的进程ID

tail [-30/-f] myapp       类似tail命令的方式查看指定程序的控制台输出

tips: 如果是Python程序,会发现用print打印的内容supervisorctl tail看不到,原因是缓存,把配置中的command改为python -u myapp.py即可;

分组

程序较多时可以用supervisorctl start all来统一操作,但如果程序较多但又不能统一操作呢?答案是分组,可以统一操作的分到一个组;

分组是在配置了program的基础上进行的,根据上节的内容,假设配置了两个program:

[program:myapp1]

[program:myapp2]

来把这两个配置为一个组app:

# vi /etc/supervisord.d/app.ini
[group:app]
programs=myapp1,myapp2

在supervisor的shell中操作分组:

tips:分组后,单个操作时需要带上组名:supervisorctl tail app:myapp1;

over

进程管理工具supervisor的使用的更多相关文章

  1. 进程管理工具supervisor

    1. 简介 supervisor有两个组件:supervisord和supervisorctl,组成了client/server结构. supervisord负责读入配置文件,然后supervisor ...

  2. Linux进程管理工具Supervisor的安装配置

    目录 Linux进程管理工具Supervisor的安装配置 简介 安装Python包管理工具 安装Supervisor 配置 配置文件参数说明 配置进程管理 启动supervisor 控制进程 交互终 ...

  3. Linux进程管理工具——supervisor

    介绍 Supervisord是用Python实现的一款非常实用的进程管理工具 安装 这里用源码 supervisor-.tar.gz .tar.gz cd supervisor- sudo pytho ...

  4. Python 进程管理工具 Supervisor 使用教程

    Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上.Supervisor 官方版目前只能运行在 Python 2 ...

  5. linux 使用进程管理工具 supervisor

    1.supervisor是使用python进行开发的运行在linux服务器上的进程管理工具 老版本的supervisor需要运行在python2环境,如果需要使用supervisor管理python3 ...

  6. 进程管理工具 Supervisor

    要想在终端后台常驻进程,首先想到的是在命令后加 & 符号,来达到隐藏程序在后台的目的,尽管看起来进程已经在后台运行了,实际上终端会话关闭时进程还是会被 kill 掉,这种问题一般是采用搭配 n ...

  7. 进程管理工具Supervisor(一)简介与使用

    Supervisor是用Python开发的一套client/server架构的进程管理程序,能做到开机启动,以daemon进程的方式运行程序,并可以监控进程状态等等. linux进程管理方式有传统的r ...

  8. python进程管理工具Supervisor

    一.Supervisor简单介绍 supervisor是一个 Client/Server模式的系统,允许用户在类unix操作系统上监视和控制多个进程,或者可以说是多个程序.supervisor与lau ...

  9. 进程管理工具Supervisor(二)Events

    supervisor可以当做一个简单的进程启动.重启.控制工具使用,也可以作为一个进程监控框架使用,作为后者,需要使用supervisor的Events机制. Event Listeners supe ...

  10. Linux进程管理工具Supervisor

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

随机推荐

  1. 学习Vue 入门到实战——学习笔记

    闲聊: 自从进了现在的公司,小颖就再没怎么接触vue了,最近不太忙,所以想再学习下vue,就看了看vue相关视频,顺便做个笔记嘻嘻. 视频地址:Vue 入门到实战1.Vue 入门到实战2 学习内容: ...

  2. Elasticsearch设置最大返回条数

    在Elasticsearch中如果需要做分页查询,我们通常使用form和size实现.form指定从有序哪一行开始,size表示从当前开始读取多少行.但是我们发现查询结果最大只能到10000,这是因为 ...

  3. IOS 圆形进度条

    // // CCProgressView.h // Demo // // Created by leao on 2017/8/7. // Copyright © 2017年 zaodao. All r ...

  4. mysql中的多表查询

    基本模式:t1 CROSS JOIN t2, t1 INNER JOIN T2 ON ,以及LEFTJOIN 和RIGHT JOIN. 这些都需要在实践中使用,多练习才行. 写一句sql语句:SELE ...

  5. [LeetCode] Group Anagrams 群组错位词

    Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...

  6. JavaScript 运行机制详解

    一.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊. Java ...

  7. mac 初次配置apache,及mac下安装mysql

    先打开apache,在浏览器上输入  localhost     回车后会如果屏幕上显示:It works! 如下图: 这说明你的apache已开启 mac 下apache配置(mac自带apache ...

  8. vue路由动态加载

    注意:是动态加载不是动态路由 解决的问题: 动态配置菜单栏的路由参数--实现菜单级的权限控制 问题成因: 在vue实例化的时候vuex.vue-router 就需要加载完毕,无法使用异步的方式从服务器 ...

  9. PAT甲级1143 Lowest Common Ancestor【BST】

    题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805343727501312 题意: 给定一个二叉搜索树,以及他的前 ...

  10. Tensorflow 的saved_model模块学习

    saved_model模块主要用于TensorFlow Serving.TF Serving是一个将训练好的模型部署至生产环境的系统,主要的优点在于可以保持Server端与API不变的情况下,部署新的 ...