初探Supervisor工具在Linux系统下的安装使用

Supervisor的简介

Supervisor是一个Python进程管理工具,可以在Linux系统下监控、控制多个非deamon进程以daemon形式运行,并在进程异常退出时自动重启等。

Supervisor的安装

如果当前用户非root用户,建议直接sudo提权执行。

sudo pip install supervisor

Supervisor的命令

安装好supervisor后,将提供两个可直接执行的命令:supervisordsupervisorctl

  • supervisordSupervisor的服务端,负责启动、停止和重启进程,以及管理Supervisor的配置文件,可以通过命令行启动或者作为守护进程在后台运行。
  • supervisorctlSupervisor的客户端,可以连接到supervisord,通过命令行与supervisord进行交互,可以实现进程的启动、停止、重启,以及查看进程状态、配置文件等操作。

Supervisor的配置文件

到此时,还不能直接通过supervisord命令启动,因为还缺少配置文件。Supervisor配置文件通常命名为 supervisord.conf。它被 supervisordsupervisorctl 使用。如果在没有 -c 选项(该选项用于显式告诉应用程序配置文件名)的情况下启动,程序将按顺序查找名为 supervisord.conf 的第一个文件。我这里只列出4个,具体可查看文末官方文档。

  • ../etc/supervisord.conf(相对于可执行文件)
  • ../supervisord.conf(相对于可执行文件)
  • /etc/supervisord.conf
  • /etc/supervisor/supervisord.conf

我一般喜欢把配置文件放到/etc/supervisord.conf这里。接下来的问题是如何编写配置文件中的内部配置项?其实官方提供了一个echo_supervisord_conf命令用来在控制台打印默认配置信息。

# 新建文件夹
sudo mkdir /etc/supervisor

# 执行配置文件重定向
sudo echo_supervisord_conf > /etc/supervisor/supervisord.conf 

Supervisor的启动

配置文件创建好了,就可以启动了。

# 带-c表示显示配置
sudo supervisord -c /etc/supervisor/supervisord.conf

# 检查进程是否启动
ps aux | grep supervisord

Supervisor的应用配置(一)

当工具启动后,我们怎么去管理我们的非 daemon 应用程序呢?其实还是通过配置文件,配置文件中每一个[program:cat]块都是一个应用配置。这里的cat就是应用名,command配置项就是一个运行命令(最好用绝对路径,省的出问题麻烦),其他的配置项解释可以查看官方文档,很详细的。

[program:cat]
command=/bin/cat
process_name=%(program_name)s
numprocs=1
directory=/tmp
umask=022
priority=999
autostart=true
autorestart=unexpected
startsecs=10
startretries=3
exitcodes=0
stopsignal=TERM
stopwaitsecs=10
stopasgroup=false
killasgroup=false
user=chrism
redirect_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stdout_events_enabled=false
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
stderr_events_enabled=false
environment=A="1",B="2"
serverurl=AUTO

我拿scrapyd来举例,两行就行。

[program:scrapyd]
command=/usr/bin/scrapyd

保存配置文件后,再次重新执行启动命令即可。

sudo supervisord -c /etc/supervisor/supervisord.conf

# 检查进程是否都启动
ps aux | grep python

Supervisor的应用配置(二)

当我们管理有很多程序的自启动配置后,就会发现如果将所有的应用配置放到supervisord.conf配置文件中会导致配置的耦合。其实有一种更好的办法就是将每个应用配置成单独的文件。实现这种方式,只需要supervisor.conf文件中开启include属性配置即可。

[include]
files = /etc/supervisor/conf.d/*.conf

我们这里用scrapyd应用来举例:

# 创建一个应用配置文件,名称随便,以.conf后缀
vim /etc/supervisor/conf.d/scrapyd.conf

# 写入应用配置,保存退出文件,重启supervisord
[program:scrapyd]
command=/usr/bin/scrapyd

Supervisor的应用管理

当我们配置多个应用后,如何对这些应用进行集中管理呢?这就是supervisorctl命令的作用。执行该命令后会进入一个新的shell中,并同时能看到所有当前应用的管理状态(运行中或者停止)。

sudo supervisorctl

在supervisorctl的shell中,提供了add、reload、restart all等命令用来管理supervisor中的应用。我们可以通过help命令来查看所有的命令。

help

Supervisor的开机自启动

关于supervisor的开机自启动,推荐使用linux中的系统管理工具systemctl来管理。

官方文档:http://supervisord.org/index.html
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇