CentOS系统进程管理利器Supervisor使用指南

更新:11-22 民间故事 我要投稿 纠错 投诉

大家好,今天小编来为大家解答以下的问题,关于CentOS系统进程管理利器Supervisor使用指南,这个很多人还不知道,现在让我们一起来看看吧!

Supervisord是一套由python开发的通用进程管理工具。它可以将普通的命令行进程变成后台守护进程并监视状态。它还提供网页管理并可以自动重启进程。

优点: 1:可以在页面上管理进程; 2:单个配置文件可以控制多个程序; 3:进程数量可控制; 4:进程资源控制能力比较强

缺点:1:无法管理后台运行的程序; 2:多进程服务无法使用kill关闭; 3:supervisord本身需要被监控; 4:自启动依赖于其他程序; 5:不能跨主机

2:安装

平台要求:Supervisor 已经过测试,可在Linux (Ubuntu 9.10)、Mac OS X (10.4/10.5/10.6) 和Solaris(10 for Intel)和FreeBSD 6.1 上运行。它可能在大多数UNIX 系统上都能正常工作。 Supervisor 不会在任何版本的Windows 下运行。 Supervisor 适用于Python 2.4 或更高版本,但不适用于任何版本的Python 3。

我使用的安装方法是pip安装:

1:安装:

pip 安装supervisord

2:检查是否安装成功:执行supervisord -v,看到输出版本号,即表示成功。矿井产出4.2.0

3:生成配置文件:

mkdir /etc/supervisor

echo_supervisord_conf /etc/supervisor/supervisord.conf

4:启动:supervisord -c /etc/supervisor/supervisord.conf

5:检查启动是否成功:ps -ef | grep Supervisord 如果找到,则说明启动成功。

6:配置子配置文件

修改supervisord.conf的[include]配置,去掉注释“;”符号,并将文件项更改为"/etc/supervisor/conf.d/*.conf"

Tips: 记得删除[include]行的注释。我忘记删除它,导致我排查了一段时间。

3:卸载

简单粗暴:只需运行pip uninstall 命令即可。

4:使用示例

这里我使用nginx进行演示。

1:首先找到nginx路径和配置文件,输入:which nginx,就会输出nginx路径。我的是/etc/bin/nginx/sbin/nginx。我们先杀掉nginx。

2:设置nginx不以后台模式运行,修改nginx.conf,输入“daemon off;” header中worker_processes旁边一行,然后重启nginx(如果配置了php,在php-fpm.conf中找到daemonize,设置为daemonize=no)

3:将子进程配置文件nginx.conf添加到/etc/supervisor/conf.d/文件夹中。文件内容如下:

[program:nginx]command=/etc/bin/nginx/sbin/nginx -c /etc/bin/nginx/conf/nginx.conf; nginx 路径

目录=/tmp;切换到目录

用户=root;执行该程序的用户

自动重启=真;自动重启

优先级=999;优先事项

开始秒=1;重启前的等待时间

开始重试=100;最大重启次数

stdout_logfile=/tmp/supervisor/nginx/nginx.log;日志档案

stdout_logfile_maxbytes=10MB;日志文件的最大大小

stderr_logfile=/tmp/supervisor/nginx/nginx_err.log;错误日志文件

stderr_logfile_maxbytes=1MB;错误日志文件的最大大小

4:创建刚才设置的stdout_logfile和stderr_logfile相关的日志目录,并设置权限

mkdir -p /tmp/supervisor/nginx

chown -R www:www /tmp/supervisor/nginx

5:重新读取supervisord配置:执行:supervisorctl reread会输出:nginx: available

6:更新子进程组:执行:supervisorctl update 会输出: nginx:linked进程组

7:这时候nginx应该已经被supervisord带起来了。让我们检查一下ps -ef | grep nginx。如果找到的话,恭喜你,说明配置成功。然后我们杀死nginx 主进程并ps -ef |再次grep nginx。可以看到supervisord会创建一个新的nginx。

5:检查子进程运行状态

可以输入“supervisorctl”命令,我的输出如下:

nginx 运行pid 25182,正常运行时间1:46:57

php 运行pid 2203,正常运行时间0:03:56

idgen 运行pid 24074,正常运行时间2:01:09

6:配置Web界面:

将supervisord.cond中的inet_http_server注释掉,则变为:

[inet_http_服务器] ;默认情况下禁用inet (TCP) 服务器

端口=127.0.0.1:9001; ip_address:port 说明符,*:port 适用于所有iface

用户名=用户;默认为无用户名(开放服务器)

密码=123;默认无密码(开放服务器)

然后重启主进程,输入:supervisorctl reload

这时我们打开浏览器,访问http:你的服务器IP地址是:9001,根据弹出的提示输入配置文件中的账号和密码。然后我们就可以看到如下页面。我们可以在页面上轻松查看进程状态。它们执行重启、停止等操作。

7:设置开机自动启动:

echo "supervisord -c /etc/supervisord.conf" /etc/rc.local

8:子进程配置文件详解:

;* 为必填项

;*[program: 应用程序名称][program:cat]

;*命令路径,如果程序使用python启动则应为python /home/test.py,

;不建议放在/home/user/下。非user用户一般无法访问command=/bin/cat。

;当numprocs为1时,process_name=%(program_name)s

;当numprocs=2时,%(program_name)s_%(process_num)02dprocess_name=%(program_name)s

;进程数numprocs=1

;执行目录,如果有/home/supervisor_test/test1.py

;将目录设置为/home/supervisor_test

;那么命令只需要设置为python test1.py

;否则command必须设置为绝对执行目录directory=/tmp

;掩码:--- -w- -w-,转换后的rwx r-x w-xumask=022

;优先级,值越高,最后启动,最先关闭,默认值999priority=999

;如果为true,当supervisor启动时,程序会自动启动autostart=true

;*自动重启autorestart=true

;开始延迟执行,默认1秒startsecs=10;启动尝试次数,默认3次startretries=3

;当退出代码为0,2时,重新开始执行,默认值为0,2exitcodes=0,2

;停止信号,默认TERM;中断:INT(类似Ctrl+C)(kill -INT pid),退出后会写入文件或日志(推荐)

;终止:TERM(kill -TERM pid);暂停:HUP(kill -HUP pid),注意与Ctrl+Z/kill -stop pid不同

;从容停止:QUIT(kill -QUIT pid);KILL、USR1、USR2等命令(kill -l),解释1stopsignal=TERMstopwaitsecs=10

;*以root用户执行user=root

;重定向redirect_stderr=false

stdout_logfile=/a/路径

stdout_logfile_maxbytes=1MB

stdout_logfile_backups=10

stdout_capture_maxbytes=1MB

stderr_logfile=/a/路径

stderr_logfile_maxbytes=1MB

stderr_logfile_backups=10

stderr_capture_maxbytes=1MB

;环境变量设置environment=A="1",B="2"

服务器地址=自动

参考文章:

http://www.supervisord.org/running.html#adding-a-program

用户评论

々爱被冰凝固ゝ

我一直在想学习怎么在 centos 上管理程序,这个教程看起来很不错!

    有5位网友表示赞同!

晨与橙与城

Supervisor 能让我把我的 Python 项目部署到 centos 吗?

    有17位网友表示赞同!

纯真ブ已不复存在

用 supervisor 管理进程真的比其他的方法简单吗?

    有18位网友表示赞同!

回忆未来

这篇文章讲的是哪种版本的 centos 呀?

    有17位网友表示赞同!

莫失莫忘

我平时习惯用 shell 命令管理进程,supervisor 能替代它们吗?

    有10位网友表示赞同!

孤者何惧

学习一下 supervisor 好像可以让我做得更高效一点!

    有5位网友表示赞同!

抓不住i

看到这篇教程好激动,终于可以尝试下supervisor了!

    有13位网友表示赞同!

矜暮

不知道 supervisor 的配置文件怎么编辑?

    有10位网友表示赞同!

古巷青灯

我想知道 centos 上安装 supervisor 的步骤。

    有19位网友表示赞同!

失心疯i

我已经了解了 supervisor 的基本用法了,但是想学习进阶技巧。

    有15位网友表示赞同!

←极§速

这篇文章会详细介绍 supervisor 的各个功能吗?

    有15位网友表示赞同!

荒野情趣

supervisor 可以监控哪些类型的进程呢?

    有14位网友表示赞同!

海盟山誓总是赊

这篇教程的例子能不能用做其他的平台?

    有16位网友表示赞同!

浅巷°

我想要知道如何使用 supervisor 做 web 服务监控。

    有8位网友表示赞同!

早不爱了

这个教程的语言有点太复杂了,希望能更简单明了一些!

    有11位网友表示赞同!

墨染殇雪

希望这篇文章能帮助我解决 centos 上进程管理的问题!

    有18位网友表示赞同!

昂贵的背影

感觉 supervisor 比直接使用 shell 命令管理进程要安全很多!

    有9位网友表示赞同!

暖栀

我已经安装好了 supervisor,接下来就来跟着教程学习了!

    有7位网友表示赞同!

┲﹊怅惘。

supervisor 能够自动重启失败的进程吗?

    有14位网友表示赞同!

我家的爱豆是怪比i

我想了解一下 supervisor 与其他进程管理工具的不同之处!

    有20位网友表示赞同!

那伤。眞美

我需要帮助设置supervisor监控 多个应用程序

    有13位网友表示赞同!

【CentOS系统进程管理利器Supervisor使用指南】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:近期观影心得分享 下一篇:兰州市亲子鉴定中心8月最新汇总:权威机构大盘点(附鉴定机构介绍)