惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
MongoDB | Blog
MongoDB | Blog
D
Docker
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
GbyAI
GbyAI
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell
M
MIT News - Artificial intelligence
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
B
Blog RSS Feed
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
Vercel News
Vercel News
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
U
Unit 42

博客园 - Athrun

[转]通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题 安卓刷量技术揭秘 【转】让Bootstrap 3兼容IE8浏览器 [LINK]Python服务器开发一:python基础 [LINK]用Python计算昨天、今天和明天的日期时间 [LINK]python中的日期和时间格式化输出 [转]Python 命令行参数和getopt模块详解 [LINK]Python MySQLdb 学习总结 [转]源代码的管理和发布:以SVN为例 [转]WampServer localhost 图标不显示解决办法 【转】如何利用logrotate工具自动切分滚动中的日志文件 [转]Linux日志文件总管——logrotate 【转】$_POST 与 php://input的区别分析 [转]考虑 PHP 5.0~5.6 各版本兼容性的 cURL 文件上传 [资料]软件测试 [转]❲阮一峰❳Linux 守护进程的启动方法 [资料]面向服务化编程架构 [资料]自动化e2e测试 -- WebDriverJS,Jasmine和Protractor [转]为什么你有10年经验,但成不了专家?
[转]Linux后台进程管理利器:supervisor
Athrun · 2016-03-17 · via 博客园 - Athrun

Linux的后台进程运行有好几种方法,例如nohup,screen等,但是,如果是一个服务程序,要可靠地在后台运行,我们就需要把它做成daemon,最好还能监控进程状态,在意外结束时能自动重启。

supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

安装supervisor

Debian / Ubuntu可以直接通过apt安装:

# apt-get install supervisor

然后,给我们自己开发的应用程序编写一个配置文件,让supervisor来管理它。每个进程的配置文件都可以单独分拆,放在/etc/supervisor/conf.d/目录下,以.conf作为扩展名,例如,app.conf定义了一个gunicorn的进程:

[program:app]
command=/usr/bin/gunicorn -w 1 wsgiapp:application
directory=/srv/www
user=www-data

其中,进程app定义在[program:app]中,command是命令,directory是进程的当前目录,user是进程运行的用户身份。

重启supervisor,让配置文件生效,然后运行命令supervisorctl启动进程:

# supervisorctl start app

停止进程:

# supervisorctl stop app

如果要在命令行中使用变量,就需要自己先编写一个shell脚本:

#!/bin/sh
/usr/bin/gunicorn -w `grep -c ^processor /proc/cpuinfo` wsgiapp:application

然后,加上x权限,再把command指向该shell脚本即可。

supervisor还有许多选项,默认的autorestart为unexpected(异常退出),具体请参考supervisor文档