专栏首页运维笔记supervisor 管理进程

supervisor 管理进程

supervisor 管理进程

说明

Supervisor是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程.

安装

 pip install supervisor

配置

echo_supervisord_conf > /etc/supervisord.conf
supervisord.conf
[unix_http_server]
file=/tmp/supervisor.sock   ; UNIX socket 文件,supervisorctl 会使用
[supervisord]
logfile=/tmp/supervisord.log ; 日志文件,默认是 $CWD/supervisord.log
logfile_maxbytes=50MB        ; 日志文件大小,超出会 rotate,默认 50MB
logfile_backups=10           ; 日志文件保留备份数量默认 10
loglevel=info                ; 日志级别,默认 info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ; pid 文件
nodaemon=false               ; 是否在前台启动,默认是 false,即以 daemon 的方式启动
minfds=1024                  ; 可以打开的文件描述符的最小值,默认 1024
minprocs=200                 ; 可以打开的进程数的最小值,默认 200
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; 通过 UNIX socket 连接 supervisord,路径与 unix_http_server 部分的 file 一致
[include]
files = relative/directory/*.ini    ; 可以是 *.conf 或 *.ini
program 配置
[program:appname]
directory = /myproject ; 程序的启动目录
command = gunicorn -w 8 -b 0.0.0.0:9090 manage:app  ; 启动命令
autostart = true     ; 在 supervisord 启动的时候也自动启动
startsecs = 5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true   ; 程序异常退出后自动重启
startretries = 3     ; 启动失败自动重试次数,默认是 3
user = www          ; 用哪个用户启动
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 50MB  ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20     ; stdout 日志文件备份数
stdout_logfile = /var/log/appname.log

其中 [program:appname] 中的 appname 是应用程序的唯一标识,不能重复。对该程序的所有操作(start, restart 等)都通过名字来实现。 几个注意点: 1.执行命令必须是绝对路径的命令 2.执行程序必须是前台运行,如果是后台运行的转为前台 3.如果涉及子进程添加以下参数,确保子进程都能停止

stopasgroup=true
killasgroup=true

启动

手工启动
supervisord -c /etc/supervisord.conf
添加为服务,并添加开机启动(centos 7)

(1).新建supervisord.service文件

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

(2).添加为服务并开机启动

cp supervisord.service /usr/lib/systemd/system/
service supervisord start
chkconfig supervisord on

supervisorctl

supervisorctl status
supervisorctl stop appname
supervisorctl start appname
supervisorctl restart appname
supervisorctl reread
supervisorctl update

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • supervisor 管理进程

    Supervisor是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程.

    明哥的运维笔记
  • TCP IP基础知识

    TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示

    明哥的运维笔记
  • mysql删除数据空间没有释放

    OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小。这是因为删除操作后在数据文件中留下碎片所致。OPTIMIZE T...

    明哥的运维笔记
  • supervisor 管理进程

    Supervisor是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程.

    明哥的运维笔记
  • supervisor管理进程

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

    菲宇
  • 将Spring Boot作为守护进程启动的一种简单的方法

    我有一个SpringBoot应用,通过shell脚本start.sh启动。现在我期望通过守护进程的方式启动这个应用,这样我即使关掉终端,该应用也能继续运行。

    Jerry Wang
  • Vue插槽slot

    使用了那么久的vue,到现在才知道vue自带的组件插槽slot,说真的,插槽的作用在一些场景下非常有用。

    wade
  • 9.源码分析---SOFARPC是如何实现故障剔除的?

    在第七讲里面7.源码分析---SOFARPC是如何实现连接管理与心跳?,我讲了客户端是怎么维护服务端的长连接的。但是有一种情况是Consumer 和 Provi...

    luozhiyun
  • 昨天,小师妹去网恋奔现了.....

    老九君
  • Vue中的slot、slot-scope和v-slot

    插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示、以及怎样显示由父组件来决定。值得注意的是:内容要写在父组件中,然后分给需要的子组件,当slo...

    刘亦枫

扫码关注云+社区

领取腾讯云代金券