使用Supervisor来管理进程

标签: 技术 | 发表时间:2015-09-06 08:00 | 作者:wuwenjie
出处:http://wwj718.github.io/

Supervisor是什么

Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.

Supervisor是用Python实现的一款实用的进程管理工具。Supervisor会帮你把管理的应用程序转成daemon程序,而且可以方便的通过命令开启、关闭、重启进程等操作,而且它管理的进程一旦崩溃会自动重启,这样就可以保证程序执行中断后的情况下有自我修复的功能。

安装与配置

Supervisor本质上是个python包,安装很简易: sudo pip install supervisor

配置文件

运行 echo_supervisord_conf,会输出一个模板,修修改改就可用了。 将其写入文件: sudo echo_supervisord_conf > supervisord.conf
如果没有root权限,可以将配置文件写在本地,之后用 -c参数来指定配置文件: supervisord -c supervisord.conf。推荐做法是将配置文件写到 /etc/supervisord.conf

生成默认配置文件(推荐做法)

echo_supervisord_conf > /etc/supervisord.conf
mkdir /etc/supervisord.conf.d

每个需要管理的进程分别写在一个文件里面,放在/etc/supervisord.conf.d/目录下,便于管理。修改配置文件,include区段修改为

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

如需要访问web控制界面,inet_http_server区段修改为

[inet_http_server]
port=0.0.0.0:9001
username=username 
password=password 

将supervisord加入系统服务,文件: /etc/init.d/supervisord

使用

  • Supervisord安装完成后有两个可用的命令行 supervisorsupervisorctl
  • supervisord:初始启动Supervisord,启动、管理配置中设置的进程: 启动supervisord: supervisord -c /etc/supervisord.conf
  • supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:programxxx]里配置的值。stop可替换为start/restart/reload

edX中(Cypress版本)

Shutdown the lms and cms:

sudo /edx/bin/supervisorctl  
> stop edxapp: edxapp_worker:

See what services are running

sudo /edx/bin/supervisorctl status

Restarting Services

LMS/CMS : sudo /edx/bin/supervisorctl restart edxapp:
Workers : sudo /edx/bin/supervisorctl restart edxapp_worker:

stop everything except the LMS and CMS

sudo /edx/bin/supervisorctl stop discern discern_celery forum ora ora_celery xqueue xqueue_consumer xserver edxapp_worker:

edx中相关配置文件

搜索 sudo find / -name *supervisord*。观察发现lms和cms相关的配置文件在 /edx/app/supervisor/supervisord.conf , /edx/app/supervisor/conf.d/*.conf

其中lms的配置文件为

[program:lms]

command=/edx/app/edxapp/venvs/edxapp/bin/gunicorn -c /edx/app/edxapp/lms_gunicorn.py lms.wsgi

user=www-data
directory=/edx/app/edxapp/edx-platform
environment=PORT=8000,ADDRESS=127.0.0.1,LANG=en_US.UTF-8,DJANGO_SETTINGS_MODULE=lms.envs.aws,SERVICE_VARIANT="lms",PATH="/edx/app/edxapp/venvs/edxapp/bin:/edx/app/edxapp/edx-plat
form/bin:/edx/app/edxapp/.rbenv/bin:/edx/app/edxapp/.rbenv/shims:/edx/app/edxapp/.gem/bin:/edx/app/edxapp/edx-platform/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
stdout_logfile=/edx/var/log/supervisor/%(program_name)s-stdout.log
stderr_logfile=/edx/var/log/supervisor/%(program_name)s-stderr.log
killasgroup=true
stopasgroup=true

参考资料

相关 [supervisor 管理 进程] 推荐:

使用Supervisor来管理进程

- - writing for time
Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.. Supervisor是用Python实现的一款实用的进程管理工具.

Supervisor的作用与配置

- - 操作系统 - ITeye博客
supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supervisor的子进程来启动,所以我们只需要将要管理进程的可执行文件的路径添加到supervisor的配置文件中就好了. 此时被管理进程被视为supervisor的子进程,若该子进程异常中断,则父进程可以准确的获取子进程异常中断的信息,可以选择是否自己启动和报警.

Android用户的一些误区――关于进程管理

- Jerry - cnBeta.COM
去年自己就弄了一台i5700,主要用来编程时候做试验平台(因为便宜). 今年6月给自己及父母各买了一台Android手机,自用DHD,老爸用的i9000,老妈用的Thunderbolt. 在进行了许多Android系统的了解及编程之后,发现其实无论是论坛上的用户还是家人使用的过程中,对于Android系统,特别是进程管理这一块都有着许多误区.

PowerTool:内核级的手动杀毒、进程管理工具

- 十年恋一人! - 精品绿色便携软件
PowerTool是由IThurricane开发的一个免费的手动杀毒辅助工具,从最初只有进程管理、文件粉碎等基本功能,到现在已发展为一个全面的系统维护工具,完美支持Windows 7 SP1(32 bit). PowerTool目前具备以下功能模块:系统修复、进程管理、内核模块、内核相关、钩子、应用层、文件、注册表、离线分析、启动项、系统服务、网络、漏洞修复、硬件温度检测.

进程管理器加强版PowerTool最新中文绿色版

- apuar - 小建の软件园
进程管理器是一个非常重要的系统程序,很多时候一些病毒、木马、恶意程序都会在进程管理器中展现出来,当然Windows系统自带的进程管理器功能是远远不够处理这些搞破坏的玩意的,它们会隐藏、驱动保护等各种手段让你无法轻松删除,今天推荐一个内核级的高级进程管理器给各位童鞋,熟悉运用它,甚至可以把一些新型病毒在杀毒软件未来得及更新病毒库的时候就通过PowerTool赶出我们的系统.

[转]【Daemontools--supervise】 系统进程监控管理器

- - 小鸥的博客
Daemontools是一个包含了很多管理Unix服务的工具的软件包. 其中最核心的工具是supervise,它的功能是监控一个指定的服务,当该服务进程消亡,则重新启动该进程. 而要添加让supervise监控的服务非常容易,只需要添加一个被监控的服务的目录,在该目录中添加启动服务器的名字为run的脚本文件即可.

【酷软】推荐几款强大的进程管理软件

- - 王跸西的生命体验blog-WangBiXi.com
Process Explorer让使用者能了解看不到的在后台执行的处理程序,能显示目前已经载入哪些模块,分别是正在被哪些程序使用着,还可显示这些程序所调用的 DLL进程,以及他们所打开的句柄. Process Explorer最大的特色就是可以中终任何进程,甚至包括系统的关键进程. Process Explorer 的显示有两个子窗口所组成,窗口上方会显示出当前活跃的程序进程,包括它们的详细描述,窗口下方则会显示出通过资源管理器模式运行的应用程序的相关信息,以及它们所调用的DLL和打开的句柄,该版本可以运行在windows NT/2K/XP/2003系统平台.

分布式系统部署、监控与进程管理的几重境界

- Allen - 博客园-首页原创精华区
陈硕 (giantchen_AT_gmail). 陈硕关于分布式系统的系列文章:http://blog.csdn.net/Solstice/category/802325.aspx. 本作品采用“Creative Commons 署名-非商业性使用-禁止演绎 3.0 Unported 许可协议(cc by-nc-nd)”进行许可.

Android用户的一些误区——关于进程管理_cnBeta 访客互动_cnBeta.COM

- 立寅 - www.cnbeta.com
去年自己就弄了一台i5700,主要用来编程时候做试验平台(因为便宜). 今年6月给自己及父母各买了一台Android手机,自用DHD,老爸用的i9000,老妈用的Thunderbolt. 在进行了许多Android系统的了解及编程之后,发现其实无论是论坛上的用户还是家人使用的过程中,对于Android系统,特别是进程管理这一块都有着许多误区.

管理

- - 人月神话的BLOG
对于中小企业而言现在管理上欠缺的不是人治或者说儒家佛家等东方管理思想,而真正欠缺的是西方法治的科学管理方法. 现在很多中小企业花很多钱去听什么东方管理思想的培训是误入歧途,东西方管理思想需要融合,但是基础还是科学的管理方法和模式. 而在这个里面最重要的仍然是流程管理,知识管理,质量管理,项目管理这些内容,而不是简单的纯管理.