开发者社区> 技术小阿哥> 正文

Supervisor 进程管理工具

简介:
+关注继续查看

supervisor

1.介绍

Supervisor是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。

2.安装

提供以下两种安装方法:

  • # pip install supervisor

  • # tar zxvf supervisor-3.1.3.tar.gz
    # cd supervisor
    # python setup.py install

3.配置

  • 生成配置文件 
    # echosupervisordconf > /etc/supervisord.conf

  • 更改配置文件,这里以tomcat,ismsrvdebug为例 
    # vim /etc/supervisord.conf 
    # program配置 
    [program:tomcat] 
    directory = /opt/tomcat
    app/bin ; 程序的启动目录 
    command = sh startup.sh ; 启动命令,可看出与手动在命令行启动的命令是一样的
    autostart = true ; 在 supervisord 启动的时候也自动启动 
    startsecs = 10 ; 启动10秒后没有异常退出,就当作已经正常启动了
    autorestart = true ; 程序异常退出后自动重启 
    startretries = 3 ; 启动失败自动重试次数,默认是 3
    user = root ; 用哪个用户启动
    redirectstderr = true ; 把 stderr 重定向到 stdout,默认 false
    stdoutlogfilemaxbytes = 20MB ; stdout 日志文件大小,默认 20MB
    stdout
    logfilebackups = 20 ; stdout 日志文件备份数
    stdout
    logfile = /opt/supervisor-3.1.3/super.log ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
    ;environment = PYTHONPATH=$PYTHONPATH:/opt/mypy

  • 更改tomcat配置
    使用Supervisord监控管理的进程必须以nodaemon启动,即不能为后台守护进程。而tomcat的startup.sh脚本是daemon方式的,所以需要更改配置文件。 
    # vim /opt/tomcat_app/bin/startup.sh 
    (将start改为run) 
    exec "$PRGDIR"/"$EXECUTABLE" run "$@"

4.启动

# supervisord -c /etc/supervisord.conf 启动Supervisor 
# supervisorctl status 查看状态 
# supervisorctl reload 重新加载配置文件 
# supervisorctl start tomcat 启动项目
# supervisorctl stop tomcat 关闭项目 
# supervisorctl restart tomcat 重启项目

5.验证

# ps -ef | grep tomcat 查看,未启动tomcat
# 启动Supervisor # ps -ef | grep tomcat Supervisor启动的时候也会启动tomcat
# 模拟 kill掉tomcat进程。
# ps -ef | grep tomcat 查看会发现tomcat被自动拉起,进程号改变了

6.注意

可以把所有配置项都写到 supervisord.conf 文件里,但并不推荐这样做,而是通过 include 的方式把不同的程序(组)写到不同的配置文件里。我们新建一个目录 /etc/supervisor/ 用于存放这些配置文件。

# vim /etc/supervisord.conf
[include]
files = /etc/supervisor/*.conf

创建配置文件管理program。
一份配置文件至少需要一个 [program:x] 部分的配置,来告诉 supervisord 需要管理那个进程。



本文转自 周新宇1991 51CTO博客,原文链接:http://blog.51cto.com/zhouxinyu1991/1791076,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
软件自动化测试工具的历史进程
软件测试最早可以追溯到1958年的美国第一个载人航天计划-水星计划,当时在该计划中首次诞生了软件测试团队。当然,在此之前也肯定是有软件测试存在的,但远没有这次有了自己的江湖地位。但这也仅仅是软件测试的萌芽,远没有到开宗立派的地步。
1005 0
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(二)
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(二)
27 0
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 二 | 准备参数 | 远程调用 mmap 函数 )
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 二 | 准备参数 | 远程调用 mmap 函数 )
34 0
【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )
【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )
36 0
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 /system/lib/libc.so 动态库中的 mmap 函数地址 )
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 /system/lib/libc.so 动态库中的 mmap 函数地址 )
33 0
【Android 逆向】Android 进程注入工具开发 ( 调试进程中寄存器的作用 | 通过 EIP 寄存器控制程序运行 | EIP 寄存器的存档与恢复 )
【Android 逆向】Android 进程注入工具开发 ( 调试进程中寄存器的作用 | 通过 EIP 寄存器控制程序运行 | EIP 寄存器的存档与恢复 )
30 0
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 调试进程 ATTACH 附着目标进程 | 读取目标函数寄存器值并存档 )
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 调试进程 ATTACH 附着目标进程 | 读取目标函数寄存器值并存档 )
39 0
[雪峰磁针石博客]MD5值重复文件多进程检查工具check_md5.py - 性能测试工具开发
MD5简介 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。
1513 0
13690
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载