Ubuntu下Supervisor安装、配置和使用,解决后台被中断

前言

服务器上运行项目时遇到某些脚本需要后台进程运行,并保证不被中断,之前都是通过nohup、&来实现,但还是会遇到终端的情况,很烦,所以找到了Supervisor。关于Supervisor网上的介绍大致如下:

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

废话不多说了,开始教程。

1、安装supervisor

apt-get install supervisor

2、生成默认的配置文件

echo_supervisord_conf > /etc/supervisor/supervisord.conf

3、修改默认配置文件,指定配置文件规则及路径

修改配置文件最后部分,去掉","并设置为如下所示。
详细的配置及说明,请参考官方文档介绍。

[include]
files = /etc/supervisor/conf.d/*.conf    ;可以指定一个或多个以.conf结束的配置文件

4、配置管理进程

创建进程配置文件(以KCPTUN为例)

vim /etc/supervisor/conf.d/kcptun.conf 

配置内容如下:

[program:kcptun]
command = /home/kcptun/server_linux_amd64 -l :20013 -t 127.0.0.1:9310 --key Lzz_013942 --crypt salsa20 --mode fast
user= root
autostart = true
autorestart = true

5、启动Supervisor服务

supervisord -c /etc/supervisor/supervisord.conf

6、控制进程

supervisord启动成功后,可以通过supervisorctl客户端控制进程,启动、停止、重启。

supervisord

运行supervisorctl命令,不加参数,会进入supervisor客户端的交互终端,并会列出当前所管理的所有进程。

supervisorctl常用命令:

supervisorctl stop program_name 停止某个进程
supervisorctl start program_name 启动某个进程
supervisorctl restart program_name 重启某个进程
supervisorctl stop all 停止全部进程
supervisorctl reload 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近遇到了很多瓶颈,整天都是在迷茫中度过,希望自己不要灰心丧气,相信只要认识到了什么时候都不晚,好好思考,尽快走出来。
    写作积累阅读 522评论 0 0
  • 周六约了闺蜜去看电影,选择了近期口碑还不错的《湄公河行动》。去之前问了老公要不要同去,他以“国产片不值得在电影院看...
    猴得柱阅读 614评论 0 1
  • 成就事件一:工作上第一个突破相关难题的人 1.工作上的WLTP,对一件极度复杂的事,经过一年的学习实践,请教懂的人...
    林大恩阅读 482评论 2 0
  • 2018.12.1.日精进: 经历了一段商业服务已经不把人当人看的经历,在你最需要的时候,在作为用户最需要的时...
    光一束阅读 100评论 0 0