Supervisor 进程管理工具

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

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,如需转载请自行联系原作者

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
Prometheus 监控 Cloud Native
使用supervisor守护Prometheus进程
使用supervisor守护Prometheus进程
|
2月前
|
消息中间件 网络协议 Python
工具人逆袭!掌握Python IPC,让你的进程从此告别单打独斗
【9月更文挑战第9天】你是否曾遇到多个Python程序像孤岛般无法通信,导致数据孤立、任务难协同的问题?掌握进程间通信(IPC)技术,可助你打破这一僵局。IPC是不同进程间传递数据或信号的机制,在Python中常用的方法有管道、消息队列、共享内存及套接字等。其中,管道适用于父子或兄弟进程间简单数据传递;套接字则不仅限于本地,还能在网络间实现复杂的数据交换。通过学习IPC,你将能设计更健壮灵活的系统架构,成为真正的编程高手。
26 3
|
3月前
使用supervisor守护freeswitch进程
使用supervisor守护freeswitch进程
|
3月前
|
消息中间件 网络协议 Python
工具人逆袭!掌握Python IPC,让你的进程从此告别单打独斗
【8月更文挑战第3天】你是否苦恼于Python程序间的“信息孤岛”现象?进程间通信(IPC)技术能助你打破壁垒。IPC是使不同进程共享数据或信号的方法。因全局解释器锁(GIL),多进程配合IPC成为高效处理数据的选择。Python提供管道、消息队列、共享内存等多种IPC手段。例如,管道适合简单父子或兄弟进程通信;套接字不仅限于网络通信,还能实现本地进程间复杂数据交换。掌握IPC,让你的进程协同作战,构建更强大灵活的系统。
25 0
|
4月前
|
Ubuntu Unix Linux
如何使用 Supervisor 管理你的进程
**Supervisor** 是一款Python编写的进程管理工具,用于类Unix系统,确保应用服务持续运行。常用命令包括:`reload`(重新加载配置)、`status`(查看进程状态)、`shutdown`(关闭所有进程)、`start`和`stop`(控制单个进程)。在CentOS上安装Supervisor用`yum install -y supervisor`,配置文件通常在`/etc/supervisord.conf`。
72 0
|
5月前
|
数据可视化 API 开发工具
详细解读cesi+supervisor可视化集中管理服务器节点进程
详细解读cesi+supervisor可视化集中管理服务器节点进程
92 0
|
6月前
|
Linux
Linux操作系统调优相关工具(一)查看CPU负载相关工具 找出系统中使用CPU最多的进程?
Linux操作系统调优相关工具(一)查看CPU负载相关工具 找出系统中使用CPU最多的进程?
62 0
|
6月前
|
Linux
百度搜索:蓝易云【Linux系统下获取系统、BIOS、进程、网络等相关信息的方法和工具。】
综上所述,通过使用命令行工具和图形化工具,可以在Linux系统下获取系统、BIOS、进程和网络等相关信息。根据具体的需求和使用场景,选择合适的工具和命令可以帮助你更好地了解和管理Linux系统。
102 2
|
6月前
|
监控 应用服务中间件 nginx
Supervisor快速入门 | 使用Supervisor守护Nginx进程
Supervisor快速入门 | 使用Supervisor守护Nginx进程
200 0

热门文章

最新文章

相关实验场景

更多
下一篇
无影云桌面